你的浏览器不支持canvas

让我们携手共创奇迹!

NPC被推动

Date: Author: LBD

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。转载请注明来自WindCrazy

这是一篇关于推动NPC,并且NPC被推动时物理与动画混合的实践,这样就可以在各个方向推动NPC,并且NPC动画有很好的适配,不必单独做多方向的被推动的动画

被推动八方向Ragdoll

总览:

进入物理模拟:获取HitResult中Trace Direction and Bone Name(因为我们无法从HitResult中获取Impulse),使用Trace Direction和手工赋值的冲量的大小构建一个模拟的冲量。将此冲量作用于获取到的Bone Name对应的骨骼节点。

物理动画的混合:为了呈现较好的视觉效果,动画中的Speed需要手动设置去适配合适的动画。Direction则需要根据Trace Direction进行归一化。之后再每帧减少Speed和物理模拟的时间,并根据此时间的大小进行物理混合权重。

退出物理模拟:剩余时间结束,停止物理模拟

RagdollNPC

初始化PhysicalAnimation Profile,设置PhysicalAnimation相关以使物理动画混合过渡自然

其中ragdoll2设置如下

NPC:HitAction事件

进入被动触发事件,设置物理过渡到动画的过渡剩余时间,进入布娃娃状态,并对hit到的骨骼施加冲量(冲量根据trace direction设置大小)

手动设置Speed;

Direction是来调整触发物理模拟后的动画相应

tick不断减少time remaining(混合过渡剩余时间)和Speed(播放动画的姿势,跟随剩余时间变化)并设置运动速度(胶囊体速度,跟随Speed变化)

利用time remaining混合物理动画,结束后退出

MaterCharacter

射线检测触发NPC进入布娃娃并将hit结果作为参数传输

动画蓝图

获取Speed和Direction

将两个值给到动画序列

BS_AllDirection


对于本文内容有问题或建议的小伙伴,欢迎提出问题