标签:
通过Unity动画状态机,能帮我们轻松处理转换各个动画片断,达到想要的效果,但是如果仅仅是一个个动画的硬生生的切换,那么看起来就非常突然,而不真实了,在质量要求比较高的游戏中,特别是动作游戏,我们就不能直接简单地用Translation连起来了,而应该使用动画融合树。
准备工作:一个人物模型,一个待机动画,一个行走动画,一个奔跑动画。
通常游戏中,我们人物从待机到跑直接切换就行,今天我们加一个行走的过渡效果吧。
创建一个动画控制器AnimatorController,将人物的Animator组件的Controller属性指向我们刚才创建的AnimatorController。
在AnimatorController中添加一个空状态Idel,然后设置动画片断为我们的待机动画。
然后再创建一个动画融合树WalToRun:
双击融合树进入编辑状态,在右侧的Inspector面板中的Motion列表中添加两个元素,从上到下依次选择我们的行走动画和奔跑动画。
创建float类型动画参数Run,将融合树的Parameter参数设置为Run:
最后,将待机状态Idel使用Translation连接到融合树,设置Condition参数为 Run Greater 0.1,反过来融合树到Idel的连接Condition设置为 Run Less 0.1。
一切就绪,在Player身上添加脚本DearMove:
1 using UnityEngine; 2 using System.Collections; 3 4 public class DearMove : MonoBehaviour 5 { 6 private Animator anim; //动画状态机 7 private int RunFloat; //Run参数ID 8 private float vertical; //前进 9 10 void Awake () 11 { 12 anim = gameObject.GetComponent<Animator>(); 13 RunFloat = Animator.StringToHash("Run"); 14 } 15 16 void Update () 17 { 18 //呼叫方向控制 19 vertical = Input.GetAxis("Vertical"); 20 //根据前进控制,设置Run参数的值, 21 //后面两个参数可不加,这里是为了让从走到跑看得更明显 22 anim.SetFloat(RunFloat, vertical, 1f, Time.deltaTime); 23 } 24 }
运行游戏,按住 W 键,可以看到Player从走慢慢过渡到跑咯!
标签:
原文地址:http://www.cnblogs.com/zhenlong/p/4870956.html