【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.目标位置适应角色移动速度

相关推荐
沧沧凉凉6 小时前
同一个 Blender 建模,Claude 两个模型都翻车,GPT-6 一次过
人工智能·游戏·ai编程
沧沧凉凉12 小时前
让我退掉 Claude 的不是代码能力,是一张图
人工智能·游戏·ai编程
zhangbp18 小时前
LLMCase-V4
功能测试·游戏
乌萨达21 小时前
王者万象棋电脑版怎么下载?PC端安装、模拟器运行及配置教程
游戏·电脑·安卓模拟器·雷电模拟器
DK185838322521 天前
【源码开源部署】电竞代练护航陪玩小程序:全游戏服务平台完整解决方案(附宝塔部署教程)
游戏·微信小程序·uni-app·开源·php
这料鬼有毒2 天前
二刷hot100-45.跳跃游戏Ⅱ
游戏
沧沧凉凉2 天前
两个小时,AI 把我 2018 年那个 Unity 版保卫萝卜搬进了浏览器
前端·游戏·ai编程
Maynor9962 天前
「原子弹爆炸」级别:Astra 复刻游戏合集(含实机截图)
java·linux·运维·数据库·gpt·游戏
wind100323 天前
DLSS5 开启保姆级教程:RTX20/30/40 显卡通用 鸣潮 / 异环 / 绝区零全适配
游戏·电脑·英伟达·dlss·鸣潮
全速向光4 天前
JoiPlay 模拟器:在手机上畅玩你所热爱的独立游戏
游戏·智能手机