📜  unity c# 更改动画 - C# (1)

📅  最后修改于: 2023-12-03 14:48:11.385000             🧑  作者: Mango

Unity C# 更改动画 - C#

在使用Unity的动画系统时,我们通常需要在代码中修改动画的状态以达成我们期望的效果。本文将介绍如何在C#中更改Unity动画。

步骤
1. 准备工作

在开始之前,我们需要做一些准备工作。首先,我们需要一个动画控制器(Animator Controller)。通常,我们可以通过创建一个空的GameObject,再在该GameObject上添加Animator组件来创建一个动画控制器。

2.获取动画控制器的引用

我们需要在代码中获取Animator组件才能访问和更改它的状态。可以通过以下方式获取:

Animator animator = GetComponent<Animator>();
3.更改动画状态

一旦我们获取了Animator组件,我们就可以通过以下代码更改动画状态:

animator.SetInteger("AnimState", 1);

在这个例子中,“AnimState”是动画控制器中动画状态机的一个参数,可以用来控制动画的不同状态。第二个参数“1”表示我们要将动画状态更改为“1”。

4. 实现动画状态转换

默认情况下,我们可以通过添加动画状态来在Animator Controller中实现状态转换。在示例动画控制器中,我们创建了两个动画状态,分别命名为“Idle”和“Run”,并分别分配了相应的动画剪辑。

要实现状态转换,我们需要添加一个转换(Transition)来连接这两个状态,并定义转换条件。将鼠标拖动到“Run”状态上,然后单击并拖动到“Idle”状态上以创建一个转换。在“Transition Inspector”窗口中,定义一个条件来告诉Animator何时切换到另一个状态。

完整代码
using UnityEngine;

public class AnimatorController : MonoBehaviour
{
    private Animator animator;

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

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetInteger("AnimState", 1);
        }
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            animator.SetInteger("AnimState", 0);
        }
    }
}
结论

在Unity中,我们可以轻松地通过C#代码来更改动画状态,从而实现动态的动画效果。我们可以通过编程实现复杂的动画控制,以适应我们的游戏需求。