1.攻击方面。
在Layer里添加attck层,做全身avtar mask 拉一个攻击动画,然后加上条件,你攻击时发现动画正常,但移动被滤掉了,不正常。当攻击的时候让突出的权重改为1,当攻击结束时把图层权重改为0。
添加了3个动画
attack层的idle 下有个清除attack信号的代码,进入,更新代码
attack1hA也有 进入和更新FSM的代码
进入Idle的时候执行的2个方法, 意思是 这个权重默认是0,然后从0,变为1的插值运算,让动画更加缓和
这个是进入地面的时候摩擦力恢复为1,离开的时候为0,防止撞墙上让这2个方法一直执行的意思是,当你跳跃撞墙 角色会有个无限更新的速度,导致会有很大的摩擦力导致下不来,这样在本物体的collider里把physics材质更新就行了
做攻击限定时,可以自己限定条件 ,跳跃的时候是false 进入地面的时候是true,这样在
在攻击的时候给这个限制条件,空中就无法再攻击了。
这个是否在某层的某状态。
想让这个动画在第三段攻击的时候加个移动量,这个量是加什么呢,是root motion里的,怎么获取呢?
在动画下创建一个脚本
private Animator anim;
private void Awake()
{
anim = GetComponent<Animator>();
}
private void OnAnimatorMove()
{
SendMessageUpwards("OnUpdateRM",anim.deltaPosition);//deltaPosition这个是最后框架的移动,好像是和root move是同步,把这个移动量传给他父类的一个叫OnUpdateRM的方法。;
}
这脚本是意思是向他的父物体传一个 移动参数,deltaPositon是做完动作的移动量你可以理解为Rootmotion移动量。
让AC接收
更新RM量然后物理引擎调用它,但是我们想让他在attack1hC调用 就要加CheckState方法了