📌  相关文章
📜  unity animator 检查动画是否正在播放 - C# (1)

📅  最后修改于: 2023-12-03 15:20:51.611000             🧑  作者: Mango

Unity Animator 检查动画是否正在播放 - C#

在Unity中,可以使用Animator组件来创建角色、道具和其他对象的动画。在某些情况下,您可能需要检查动画是否正在播放,以便在适当的时间进行其他操作(例如在动画结束后触发另一项任务)。

以下是如何在C#中使用Animator组件检查动画是否正在播放的方法:

获取Animator组件

首先,您需要获取Animator组件以便访问其属性和方法。您可以通过访问对象的GetComponent<>()方法来获取Animator组件。例如,如果您想获取名为"Player"的游戏对象的Animator组件,请使用以下代码:

Animator animator = GameObject.Find("Player").GetComponent<Animator>();

在这个例子中,我们首先通过GameObject.Find()方法获取游戏对象"Player",然后使用GetComponent<>()方法获取Animator组件。

检查动画是否正在播放

一旦你已经获取了Animator组件,你可以使用其IsPlaying()方法来检查动画是否正在播放。例如,以下代码将检查名为"Run"的动画是否正在播放:

if (animator.GetCurrentAnimatorStateInfo(0).IsName("Run") && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1.0f)
{
    // 动画正在播放
}
else
{
    // 动画已经结束
}

在这个例子中,我们首先使用GetCurrentAnimatorStateInfo()方法获取当前Animator控制器的状态信息。然后,我们使用IsName()方法检查名为"Run"的动画是否正在播放,然后使用normalizedTime属性检查动画是否已经完成。

完整代码示例

以下是完整的检查Animator组件中动画是否正在播放的代码示例:

using UnityEngine;

public class CheckAnimator : MonoBehaviour
{
    private Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        if (animator.GetCurrentAnimatorStateInfo(0).IsName("Run") && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1.0f)
        {
            // 动画正在播放
        }
        else
        {
            // 动画已经结束
        }
    }
}

在这个示例中,我们首先使用Start()方法获取Animator组件,然后在Update()方法中使用IsPlaying()方法检查动画是否正在播放。您可以将此脚本附加到具有Animator组件的游戏对象上,并根据需要进行修改。

结论

Animator组件允许您创建和播放Unity中的动画。使用IsPlaying()方法和GetCurrentAnimatorStateInfo()属性,您可以轻松地检查动画是否正在播放,并在适当的时间执行其他操作。

希望这篇文章对你有帮助。如果您有任何问题或建议,请随时与我联系!