首先是思路
Foot Placement 其实就是通过IK动画调整骨骼把游戏角色的双脚固定在地面上,确保角色在斜坡或者凹凸的地形上时可以正确的将脚放
置在其表面上 :
文档链接 : https://docs.unrealengine.com/en-US/Engine/Animation/IKSetups/index.html
你可以在 Content Examples 项目里找到上面文档里的例子
虚幻的一篇官方文档介绍了一些关于 Foot IK 的内容,不过并不是 “step-by-step” 的教程,只是一个概述,思路很简单,就是通过射线断角色双脚到地面的距离计算出一个 偏移量(offset) ,然后根据这个 偏移量 来移动骨骼 调整双脚上下的位置来贴近地面. 但是你只能通过关闭物理碰撞或是只检测射线来看到效果,而且如果角色双脚到地面的距离大于最大距离的时候(骨骼的长度)整个角色就会显得非常不自然,所以我们还需要控制整个身体的偏移让人物的脚可以到达地面,而且通过移动整个身体我们也不需要担心碰撞的问题了.
下面是用蓝图实现的具体过程.
实现
-
Setup Animation Blueprint
我们首先设置动画蓝图,
用 Two Bone Ik 节点控制两个脚部骨骼的偏移:
用 Transomform Bone 节点来控制身体( root bone )的偏移:
设置完成后可以自行调整查看效果,之后在角色蓝图里计算出 偏移量 后给再这三个 Offset 赋值.
-
定义 Tracing Function ( Foot Trace )
红色线段的长度是我们要求的值,Trace Distance、Trace Hit 和 Trace End 都是已知的.蓝图实现:
这里的 ActorLocation 就是 CapsuleComponent 的中心点的位置,从 CapsuleComponent 的中心向下发射一条射线,长度是 CapsuleHalfHeight + TraceDistance,然后求出 Out Hit Trace End ( Trace End ) 与Out Hit Location ( Trace Hit ) 的距离再减去 TraceDistance 后我们就得到了需要return的 Foot Offset.