【UE5.3 C++】ARPG游戏 04-角色脚部贴合地形

效果

步骤

新建一个"控制绑定"

这里命名为"CR_EchoFootIK"

找到角色的骨骼网格体并打开

可以看到这个角色包括IK骨骼(反向动力学骨骼)这些骨骼通常不直接绑定皮肤 (即不带有蒙皮权重,移动它们不会直接拉伸角色的肉体),而是作为目标点(Target)参考点存在的。它们用于辅助程序化动画的计算。

  • 没有ik_foot 的问题:脚部贴地。当游戏角色站在斜坡、楼梯或不平整的地面上时,如果只播放标准的站立动画,一只脚可能会悬空,另一只脚可能会陷入地下。

  • 没有ik_hand 的问题:武器握持与手部锁定。在使用长枪(步枪)等双手武器时,不同的呼吸动画或移动动画可能会导致左手(托举手)滑离枪管,或者导致枪穿模。

如果角色没有IK骨骼,我们可以通过创建虚拟骨骼来代替IK骨骼。首先点击"添加虚拟骨骼-》root"

添加后会出现一个名为"VB root_root"的虚拟骨骼

选中"VB root_root",添加虚拟骨骼foot_l和foot_r

添加后会在"VB root_root"层级下添加"VB VB root_root_foot_r"和"VB VB root_root_foot_l"

打开"CR_EchoFootIK"点击"Import Hierarchy"

选择网格体然后点击确定

添加一个函数,这里命名为"FootTrace"

函数"FootTrace"添加输入输出

函数逻辑如下,在指定的骨骼的前方5cm上方50cm处发出球体追踪,在正下方150cm处结束追踪,检测到碰撞后返回碰撞点坐标。

创建如下变量,注意ShouldDoTrace设置为公有

图表中添加如下节点。主要实现的是 Foot IK(足部反向动力学) 功能,具体来说是**"地形贴合"**。它的作用是让角色的脚能够根据地面的高低起伏自动调整位置,并带动盆骨(Pelvis)上下移动,从而避免"脚悬空"或者"脚陷地"的现象

从脚部前上方的位置向下发射球体追踪,检测左脚下的地面高度,计算出当前脚的位置和实际地面的距离差,存入 ZOffset_LTarget。同理,计算右脚的偏移量,存入 ZOffset_RTarget

直接使用第1步检测到的数值可能会导致脚瞬间跳变,这里使用了 Alpha Interpolate 节点。它会将当前的偏移量 ZOffset_L 平滑地过渡到目标偏移量 ZOffset_LTarget,参数 Interp Speed(图中是15.0)决定了脚适应地形的速度。数值越大,脚贴地越快;数值越小,动作越柔和

比较左脚偏移量 ZOffset_L 和右脚偏移量 ZOffset_R,取两者的最小值。如果是负值(脚踩坑里了),盆骨需要跟着降低,否则腿会不够长,导致脚悬空

这里并没有直接移动真的脚骨骼,而是移动了虚拟骨骼。使用 Modify Transform(修改变换)节点,将计算好的 Z轴偏移量加到虚拟骨骼和盆骨上。这一步做完后,虚拟骨骼已经处于"贴合地面"的完美位置了,但角色原本的脚还在半空中或者地底下

让真骨骼去追逐虚拟骨骼,并自动调整全身姿态。输入是刚才移动到位的左/右虚拟骨骼的 Transform。FBIK 求解器会强制把真脚拉到虚拟骨骼的位置。在这个过程中,FBIK 会自动计算膝盖的弯曲、髋关节的旋转、甚至脊柱的微调,让角色的姿势看起来自然

打开动画蓝图"ABP_SlashCharacter",在动画图表中添加如下节点。这样就实现了只在角色站立不动时启用 Foot IK,而在跑动时关闭它,可以节省性能,也能防止跑动时的脚步滑动。

选中"Control Rig"节点,在细节面板中色织控制绑定类为"CR_EchoFootIK"

此时运行可以看到角色双脚可以完美贴合地形了。

相关推荐
前端不太难9 小时前
HarmonyOS 游戏项目,从 Demo 到可上线要跨过哪些坑
游戏·状态模式·harmonyos
子春一9 小时前
Flutter for OpenHarmony:色彩捕手:基于 CIELAB 色差模型与人眼感知的高保真色彩匹配游戏架构解析
flutter·游戏·架构
前端不太难13 小时前
在 HarmonyOS 上,游戏状态该怎么“死而复生”
游戏·状态模式·harmonyos
ujainu21 小时前
Flutter + OpenHarmony 游戏开发进阶:用户输入响应——GestureDetector 实现点击发射
flutter·游戏·openharmony
ujainu1 天前
Flutter + OpenHarmony 实现无限跑酷游戏开发实战—— 对象池化、性能优化与流畅控制
flutter·游戏·性能优化·openharmony·endless runner
呆呆敲代码的小Y1 天前
【Unity工具篇】| 超实用工具LuBan,快速上手使用
游戏·unity·游戏引擎·unity插件·luban·免费游戏·游戏配置表
我的offer在哪里1 天前
用 Unity 从 0 做一个「可以玩的」游戏,需要哪些步骤和流程
游戏·unity·游戏引擎
串流游戏联盟1 天前
启程!手机也能邂逅暖暖万相奇观
游戏·远程工作
User_芊芊君子1 天前
HCCL高性能通信库编程指南:构建多卡并行训练系统
人工智能·游戏·ai·agent·测评
AI视觉网奇1 天前
3d数字人 ue blender 绑定衣服对齐 2026
学习·ue5