【UE】混合程序动画

混合程序动画

Part01 头部朝向目标点

1.控制点测试效果

关于aim节点:

  • Primary (Aim)
    • Axis : 指向目标的轴,头部朝向一般是向前
    • Target :目标位置
  • Secondary (Up)
    • Axis : 用来定义"向上"的轴,确保骨骼在旋转时不会发生翻转。
    • Target :向上的方向

2.在Level中头部朝向目标

角色蓝图

tick:

ControlRig

LookAtTarget要设置为public

从世界坐标转换为Rig坐标

动画蓝图

Initial:得到角色蓝图实例

update:从蓝图传递参数

传入参数到ControlRig

效果:

3.利用Level Sequence创建Left-Right look动画

录制教程:

4.加入到动画蓝图

对动画序列的Additive设置如下:局部空间 以中间帧15帧为基准

ControlRig中设置LeftRightLookBlend曲线值映射:-90,90->-0.5,0.5

因为曲线的默认值是0,为了不让默认时刻身体朝向正中间,曲线必须映射为-0.5,0.5

Spring Interpolate 是 Control Rig 中一个**基于物理弹簧模拟的平滑插值节点,离目标越远,逼近速度越快;越近则越慢

**

  • Strength:弹簧的刚度决定了它向目标方向的拉力大小。该数值表示在无阻尼条件下弹簧的振荡频率。
  • CriticalDamping:弹簧的阻尼系数
    • = 1.0 → 临界阻尼:最快回到目标且无振荡(推荐默认)
    • < 1.0 → 欠阻尼:会产生来回振荡(弹性晃动效果)
    • > 1.0 → 过阻尼:更慢但更稳定地逼近

动画蓝图添加叠加层Additive,叠加层动画播放进度用LeftRightLookBlend曲线控制,由于前面曲线映射为-0.5,0.5,因此这里需要加上0.5再传入ExplicitTime

效果:

5.限制头部旋转量在90度以内

头部旋转量 = aim后的Rotation - 头部初始Rotation

注:四元数Quat不能相减,四元数A和B的旋转差 实际上是 A 乘 B 的"逆"

------如果想要四元数的旋转差用"-"来运算,可以考虑重载运算符

Part02 与其他动作混合(抓取、攻击、环境交互)

创建动画

fk和ik的切换

勾上即切换到ik

目标位置偏移

原理:实际抓取的位置 - 动画资产中抓取的位置 = 产生的偏移量

目标位置= 偏移量 × HandGrab曲线值 + 手部自身的位置

控制点

蒙太奇的动画曲线HandGrab

效果:

抓取场景中实际的物体位置

把原来测试用的控制点换成实际要抓取物体位置

效果:

一些潜在问题以及应用场景

1.目标位置距离角色太远

有时候,当目标位置距离角色太远时,角色的身体可能会为了够到目标而发生轻微扭曲或倾斜,看起来会有些不自然,甚至显得有点傻。因此可以通过一些方式解决这个问题。

例如,可以设定一个目标距离范围:如果目标离玩家过远,可以在 Control Rig 中移动角色的骨盆,让身体向前倾,或者仅将身体向前移动,同时保持双脚留在原地。也可以通过第三人称角色蓝图直接让角色走进范围后再拾取。

不过,更合理的方案通常是只允许角色抓取处于可及范围内的物体,而不是让角色尝试抓取明显过远、不适合抓取的目标。角色不应该被允许去够那些距离过远的物体。

最简单的实现方法是在第三人称角色中,在角色前方设置一个碰撞盒(Box Collision)或碰撞球(Sphere Collision),用于检测哪些物体处于角色的抓取范围内。当玩家尝试抓取时,例如按下鼠标左键,可以获取这个碰撞体内所有重叠的 Actor,并检查这些对象是否带有"可拾取(Pickable)"之类的标签,或者是否属于角色能够拾取的对象类型。

除了重叠检测外,还应当进行距离检查。可以检测目标与角色、角色头部,或者角色手臂之间的距离,确认目标确实位于合理的抓取范围内。因为即使某个物体与碰撞体发生了重叠,它也不一定真的处于你期望的可抓取位置。

此外,还可以进行一次射线检测(Line Trace),确认角色能够"看到"想要拾取的物体。理论上,一个物体可能位于角色的可抓取范围内,也可能与碰撞体重叠,但它可能在一面墙的后面。此时角色实际上无法直接接触该物体,因此需要确保角色与目标之间没有墙体或其他障碍物阻挡。

这些都是可以在蓝图中完成的基础判断逻辑。通过距离、碰撞重叠和视线检测,可以避免角色对不合理的位置执行抓取动画。

这类动画本质上是一种动态调整动画。它可以用于拾取物体,也可以用于让角色朝某个目标出拳。无论是抓取还是攻击,基本都可以使用相同的逻辑。

2.目标位置适应角色移动速度

相关推荐
2601_966563523 小时前
SFC游戏下载解压即玩 经典游戏整合版 包含SFC游戏合集1460个
游戏
笨鸟先飞的橘猫1 天前
c++游戏后端开源框架学习——wukong(十、lua热更新)
c++·游戏·开源
玖玥拾2 天前
Unity3D RPG 入门项目(八)游戏设置面板、帧率控制、快捷技能药品栏、技能解锁系统
游戏·3d·unity·游戏引擎
电子云与长程纠缠2 天前
UE5 Lyra PocketWorld进行3D内容UI预览 - 下
开发语言·学习·游戏·ui·ue5
檀越剑指大厂5 天前
哪个远程控制软件低延迟适合玩游戏?2026年8月六款远程工具按游戏类型深度实测
游戏·玩游戏
_ZHOURUI_H_5 天前
Unity TCP底层极限拆解:粘包、半包、CRC、序列号、双缓冲到底怎么一起工作的?
网络·网络协议·tcp/ip·游戏·unity·游戏引擎·游戏开发
言乐65 天前
Python游戏水平测试辅助系统2
开发语言·windows·python·游戏·django
KindSuper_liu5 天前
Unity 游戏网络基础:从 TCP、UDP 到 HTTP、TLS 与 Best HTTP
网络·游戏·unity
种时光的人5 天前
2026高帧远程游戏实测:ToDesk、向日葵、UU 远程谁更能打
游戏
言乐65 天前
Python游戏水平测试辅助系统
开发语言·python·游戏·django·pygame