Montage Root Motion 能夠維持 Character Movement Component Velocity 嗎?

如標題所說,當前我在利用montage播放空中的特殊動作,並且希望該動能可以維持下去,但就算我抓到velocity帶入,在銜接中都有短暫的停滯,無法完美的讓動能過度過去,有甚麼方法能夠解決這個問題?

您好,由于montage root motion会覆盖CMC的速度,因此如果想要播放时想要维持之前的速度可以:

  1. 自定义RootMotionSource通过Gameplay Ability将动画的根运动作为RMS来播放
  2. 类似Lyra的做法,蒙太奇只负责动作表现,把位移交给RootMotionSource去做
  3. 继承CharacterMovementComponent去覆写ConstrainAnimRootMotionVelocity将Root Motion加到无Root Motion情况下应有的速度

這些做法是不用動畫上的位移嗎,如果我需要動畫的位移,並且在動畫結束後能夠保持動畫的Velocity,這樣是做得到的嗎?

不知道有沒有例子可以示範?​

我说的1和3就是在播放动画的过程中从动画上拿到位移,再叠加你要的动能速度,我不清楚你说的两段动画直接是否有间隔

如果没有间隔,那可以自定义一个FRootMotionSource_Animation,将CharacterMovementComponent 中HasAnimRootMotion()下面的哪些提取动画速度的代码放到这个RMS里,其他RMS去Additive上这个RMS,参考例子的话我可能得找下,社区应该有一些参考

如果有间隔想要想要在这段间隔上补充上动能,可以launcherCharacter或者叠加一个RMS