U3L18-7——动作目标匹配
U3L18-7——动作目标匹配
动作目标匹配
动画目标匹配主要指的是
当游戏中角色要以某种动作移动,该动作播放完毕后,人物的手或者脚必须落在某一个地方
比如:角色需要跳过踏脚石或者跳跃并抓住房梁
那么这时我们就需要动作目标匹配来达到想要的效果
本章代码关键字
1 | animator.MatchTarget() //动画目标匹配的方法,使某个动画能让该对象的某个点在动画播放期间精确的移动到某个目标点上 |
如何实现动画目标匹配
Unity 中的 Animator 提供了对应的函数来完成该功能,使用步骤是
- 找到动作关键点位置信息(比如起跳点,落地点,简单理解就是真正可能产生位移的动画表现部分)
- 将关键信息传入 MatchTarget API 中
MatchTarget
动画目标匹配的方法
注意!调用匹配动画的时机有一些限制 ——> 具体看这里
- 参数一:目标位置
- 参数二:目标角度
- 参数三:匹配的骨骼位置
- 参数四:位置角度权重
- 参数五:开始位移动作的百分比
- 参数六:结束位移动作的百分比
1 | using UnityEngine; |
注意!
调用匹配动画的时机有一些限制
- 必须保证动画已经切换到了目标动画上
- 必须保证调用时动画并不是处于过度阶段,而真正在播放目标动画
如果发现匹配不正确,往往都是这两个原因造成的 - 需要开启Apply Root Motion !
AvatarTarget
骨骼目标的枚举,在MatchTarget()方法里用来表示骨骼上的哪个地方的位置用来匹配目标位置
1 | //UnityEngine命名空间内,AvatarTarget的定义 |
MatchTargetWeightMask
结构体,用来记录XYZ方向以及角度变化的权重
构造时,参数一是XYZ方向上变化的权重组成的Vector3,三个值范围都是0到1,参数二是角度变化的权重,范围都是0到1
1 | new MatchTargetWeightMask(Vector3.one, 1) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!
