首页 > 解决方案 > Unity不播放完整动画,只播放片段

问题描述

我正在统一开发一款游戏,我需要一些动画,所以我制作了这个脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sword : MonoBehaviour
{
    Animator m_animator;
    
    void Start()
    {
        m_animator = GetComponent<Animator>();
    }
    
    void Update()
    {
            if(Input.GetKey(KeyCode.W))
            {
                m_animator.ResetTrigger("Chop");
                m_animator.ResetTrigger("Idle");
                m_animator.SetTrigger("Run");
            }
            else if(Input.GetKey(KeyCode.A))
            {
                m_animator.ResetTrigger("Chop");
                m_animator.ResetTrigger("Idle");
                m_animator.SetTrigger("Run");
            }
            else if(Input.GetKey(KeyCode.S))
            {
                m_animator.ResetTrigger("Chop");
                m_animator.ResetTrigger("Idle");
                m_animator.SetTrigger("Run");
            }
            else if(Input.GetKey(KeyCode.D))
            {
                m_animator.ResetTrigger("Chop");
                m_animator.ResetTrigger("Idle");
                m_animator.SetTrigger("Run");
            }
            else if(Input.GetKey(KeyCode.Space))
            {
                m_animator.ResetTrigger("Chop");
                m_animator.ResetTrigger("Idle");
                m_animator.SetTrigger("Run");
            }
            else if(Input.GetMouseButton(0))
            {
                m_animator.ResetTrigger("Run");
                m_animator.ResetTrigger("Idle");
                m_animator.SetTrigger("Chop");
            }
            else
            {
                m_animator.ResetTrigger("Run");
                m_animator.ResetTrigger("Chop");
                m_animator.SetTrigger("Idle");
            }
        }

}

它可以工作,但它只在剪切和重新启动动画或转到另一个动画之前播放一点动画。这怎么能解决?

标签: c#unity3d

解决方案


可能是来自exit time动画转换的问题。我建议您进入 Animator Controller,然后单击动画图表中的转换并取消选中“有退出时间”。

如果要保持退出时间,则必须调整每个过渡时间以与动画持续时间很好地配合。

有退出时间

让我知道结果!


推荐阅读