acecase 发表于 2022-10-27 17:42

unity 状态机Animator Control

状态机Animator               

场景        带动画的角色-add animator                                               
资源

[*]Create-Animator Controller-Create State-Empty-Create State-Empty创建两个状态
[*]New State-改名一个Idle一个Run
[*]Mothion-Animation Clip(选中作用的角色就可以在Animation窗口点击播放动画)
[*]两个State的Mothiong分别挂Animation Clip
[*]Ctrl连选两个State右键创建条件Make Transition,做两次
[*]Parameters创建属性类型Float,命名test,初始值0
[*]点击创建的条件Transition-Conditions-+选中刚创建的属性test Greater 1,另一个Less 1
创建个脚本实现简单的角色状态动画根据鼠标点击进行切换,挂到角色上去即可
public class Test : MonoBehaviour
{
    Animator m_Animator;
    bool b;

    // Start is called before the first frame update
    void Start()
    {
      m_Animator = GetComponent<Animator>();
      b = true;
    }

    // Update is called once per frame
    void Update()
    {
      if (Input.GetMouseButtonDown(0))
      {
            if (b)
            {
                m_Animator.SetFloat("test", 2);
            }
            else
            {
                m_Animator.SetFloat("test", 0);
            }
            b = !b;
      }
    }
}有个明显的问题,前面的动作播放完才会触发条件播放后续的动作,而实际上动作切换不会等那么久。

blendtree                                                               

创建        Animator-Create State-From New Blend Tree                                                       
编辑        双击创建的BlendTree                                                       
        Inspector-Motion添加Idle以及Run动画,分别设置Threshold为0和2                                                       
        右键Entry-Set StateMachine Default State连接到刚创建的Blend Tree                                                       
直接用之前创建的脚本,可以实现动作的无缝切换。Animation窗口可以直接选择各种动画。
页: [1]
查看完整版本: unity 状态机Animator Control