Unity之动画系统的学习(一):场景动画

首先创建一个游戏物体

在这里插入图片描述

打开Animation视图

Window ->Animation -> Animation,打开Animation视图
在这里插入图片描述

为游戏物体创建一个动画片段(Animation Clips)文件(以.anim结尾)

在这里插入图片描述

为命名为Cubeposition的动画片段(Animation Clips)录制动画

通过在Animation视图中点击红色按钮就可以开始Cubeposition的动画片段的录制。可以通过移动playback head(白线)到关键帧,并在Scene视图或其他地方进行相应的操作,这样在此关键帧处的变化将被记录下来。再次点击红色按钮可结束录制。具体如下图所示。
在这里插入图片描述

通过Create New Clip可以创建一个新的动画片段。
在这里插入图片描述
下面创建命名为CubeRotation和CubeScale的动画片段,并运行。
在这里插入图片描述

Animator Controller

通过上图,我们发现运行后只会播放第一个动画片段。要想其他的动画片段也能够播放,这时就需要Animator Controller进行动画状态的控制了。

如下图所示就是一个Animator Controller,在我们创建动画片段时,Unity会为我们自动创建一个Animator Controller。当然如果没有,我们也可以通过在Project视图下右键 -> Create -> Animator Controller
在这里插入图片描述
在这里插入图片描述

通过Window ->Animation -> Animator打开Animator视图。通过滚轮来控制Base Layer的缩放,按住滚轮或按住 Alt/Option 键拖拽可平移视图。
在这里插入图片描述

在这里插入图片描述
Entry:进入状态,相当于入口
橙色:默认状态
Exit:退出状态

动画状态的转换

选中一个状态,右键-> Make Transition,连到你想要转换到的状态。
在这里插入图片描述
同时Animator视图可以以可视化的方式看状态的转换,如下图所示。
在这里插入图片描述

用脚本的方式进行状态转换

在Animator视图中的Parameters可以进行参数的设置,通过不同的参数取值来判断是否进行状态的转换。这些参数分为4个基本类型Float,Int,Bool,Trigger。我们可以在脚本中通过调用Animator类中的方法(SetFloat,SetInt,SetBool,SetTrigger,ResetTrigger)对参数进行赋值。
在这里插入图片描述

设置参数

在这里插入图片描述
当触发后,Trigger 的 true 选项会自动返回到 false。

设定转换条件。

点击状态转换的箭头,设置转换条件。

在这里插入图片描述

创建脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//[RequireComponent(typeof(Animator))] //强制要求当前脚本所在的游戏物体必须有Animator组件,没有会自动进行添加
public class AnimController : MonoBehaviour {
    
    

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

    
    void Update() {
    
    

        if (Input.GetKeyDown(KeyCode.Space)) {
    
    
            anim.SetTrigger("RoationToScale");
        }

    }
}

效果:
在这里插入图片描述

通过运行发现,旋转到缩放的状态不能即时转换,可以通过取消Has Exit Time勾选允许状态的即时转换
在这里插入图片描述

给动画片段添加Event事件

在某个动画帧添加Event事件,让动画片段执行完,销毁游戏物体。

    public void Disappear() {
    
    
        Destroy(gameObject);
    }

在这里插入图片描述

参考学习自链接

猜你喜欢

转载自blog.csdn.net/weixin_39520967/article/details/107362273