一、场景构建
首先新建一个空白场景,使用unity内置的Cube物体搭建一个门的模型。四个Cube分别作为门框的四周,然后用一个扁平的Cube作为门。记得使用一个空物体把门轴移动到合适位置,方便下一步制作开门动画。
二、制作动画
在Hierarchy窗口中选择Door,然后使用快捷键Ctrl+6打开动画窗口。使用Unity内置的动画编辑工具制作简单的开门动作。
三、设置动画状态机
在Hierarchy窗口中选择Door,双击Animator组件上的名为Door的AnimatorController,打开动画状态机窗口Animator。新建一个空的动画片段,并且把它设为默认状态,这样运行时不会自动播放动画。添加一个float类型的参数,取名为“speed”。然后在DoorOpen的动画片段中速度乘以该参数。具体设置如下。
四、编写代码
新建一个AnimatorReverse的脚本,粘贴下面内容。
using UnityEngine; public class AnimatorReverse : MonoBehaviour { private Animator anim; private void Start() { anim = GetComponent<Animator>(); } private void Update() { if(Input.GetKeyDown(KeyCode.A)) { Open(); } if(Input.GetKeyDown(KeyCode.B)) { Close(); } } private void Open() { if (anim.GetCurrentAnimatorStateInfo(0).normalizedTime < 0) { anim.Play("DoorOpen", 0, 0); } else { anim.Play("DoorOpen"); } anim.SetFloat("speed", 1); } private void Close() { if (anim.GetCurrentAnimatorStateInfo(0).normalizedTime > 1) { anim.Play("DoorOpen", 0, 1); } else { anim.Play("DoorOpen"); } anim.SetFloat("speed", -1); } }
把这个脚本挂载到Door物体上。
五、运行
使用键盘上的A键、B键可以控制动画正放和倒放。