目前我只在单机模式下运行Mover, 并尝试实现RootMotion
目前使用FLayeredMove_AnimRootMotion去实现效果
在只播放一次完整蒙太奇的情况下运行正常, 但多次播放并把前面蒙太奇打断的情况下, 前一次的FLayeredMove_AnimRootMotion并没有停止导致效果不正常
尝试调整了一下layeredmove中的mixmode, 效果也不太对
目前没找到合适的停止LayeredMove的接口, 请问这种情况正确的做法是什么?
目前我只在单机模式下运行Mover, 并尝试实现RootMotion
目前使用FLayeredMove_AnimRootMotion去实现效果
在只播放一次完整蒙太奇的情况下运行正常, 但多次播放并把前面蒙太奇打断的情况下, 前一次的FLayeredMove_AnimRootMotion并没有停止导致效果不正常
尝试调整了一下layeredmove中的mixmode, 效果也不太对
目前没找到合适的停止LayeredMove的接口, 请问这种情况正确的做法是什么?
您好,FLayeredMove_AnimRootMotion::GenerateMove内部会判断当前是否是bIsMontageStillPlaying状态才会走下面的流程,因此如果要把前面的蒙太奇打断,需要调用montage stop中断当前的播放状态即可
这部分代码我查阅到了 基于GenerateMove内部的判断方式的话 我的BUG的原因很好理解
主要是我是用同一个Montage的不同Section来做不同动画以及打断的 虽然play montage的时候 传入了bStopAllMontages=true 但同一帧内 同一个Montage又play起了另一个MontageInstance
所以目前的解决方案 可能还是手动stop layeredmove, 所以这里不太理解的是 layererdmove是说不允许在外部stop吗
或者基于我上面的情况 有没有契合Mover架构的方式
我看了下,这部分内容其实是后面引擎需要做的一部分,目前内部的Jira显示预计5.7会加入UE-194452,FLayeredMove_AnimRootMotion::GenerateMove里面的注释也有提到Future improvements包括对montage interrupted的支持,所以目前只能手动stop layeredmove
好的 有以上信息足够了 感谢
不客气的,有问题再交流~