1: 状态转换 :是在规定时间,或者某一条件下:从一个动作过渡到另一个动作,在两个不同的动作过渡用这个会比较有好的过渡效果。
2. BlendTree 混合树: 一般混合两个相似的动作,它们可以通过控制权重来决定混合程度。
混合树创建步骤:1.右击出现creat state -> from blend Tree.
2.双击新建的混合树:
3.右击添加两个addMotion
4.创建两个Motion:设置Blend Type 为1D ( 只有一个参数,用于控制状态之间的切换 )右上角的Parameter参数 为 Speed .然后通过设置speed在Unity 脚本中设置混合的权重:因为主角上升下落会导致主角上升下落动作融合切换,所以可以通过把主角的正负速度设置为Speed 这个参数的值;代码如下
//这个插值可以使在主角踩在蹦床的时候要 向上弹跳的时候(冲力)(速度比较大)但是一下子动作速度从负到正(比较大的速度)的融合异常。
float _speed = Mathf.Lerp(qiqiAnimator.GetFloat("Speed"), qiqiRigidbody.velocity.y, Time.deltaTime * 5); player.SetFloat("Speed", _speed);
5.speed参数的设置在左上角parameter上设置。
6. blendTree Type
1. 2D Simple Directional具有方向性的动画片段,同一方向上最好不要有多个动画片段
2 . 2D Freeform Directional :主要用于控制具有方向性的动画片段,同一方向上允许有多个动画片段,(0,0)位置上必须有一个动画片段
3. 2D Freeform Cartesian : 不一定具有方向性的动画片段.
下面:创建蹦床的九个动作:把blendTree 设置2D笛卡尔坐标系(上面第三种):给它们设置两个参数:分别为Horizontal ,Height,然后通过设置混合树对应参数的坐标。这样在蹦床上就可以通过主角碰到蹦床的时候根据蹦床要给予主角向上的力度大小归一化大小来判断蹦床深度混合程度以及主角踩在蹦床位置归一化比例大小来判断主角左中右动画的融合程度。
设置代码类似上面。