Window ->Animation -> Animation,打开Animation视图
通过在Animation视图中点击红色按钮就可以开始Cubeposition的动画片段的录制。可以通过移动playback head(白线)到关键帧,并在Scene视图或其他地方进行相应的操作,这样在此关键帧处的变化将被记录下来。再次点击红色按钮可结束录制。具体如下图所示。
通过Create New Clip可以创建一个新的动画片段。
下面创建命名为CubeRotation和CubeScale的动画片段,并运行。
通过上图,我们发现运行后只会播放第一个动画片段。要想其他的动画片段也能够播放,这时就需要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事件,让动画片段执行完,销毁游戏物体。
public void Disappear() {
Destroy(gameObject);
}
参考学习自链接