AnimatorController动画融合树

本文介绍如何使用Unity动画状态机及动画融合树实现角色从待机到行走再到奔跑的平滑过渡,通过创建动画控制器、设置动画参数和脚本控制,使游戏角色动画更加真实自然。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过Unity动画状态机,能帮我们轻松处理转换各个动画片断,达到想要的效果,但是如果仅仅是一个个动画的硬生生的切换,那么看起来就非常突然,而不真实了,在质量要求比较高的游戏中,特别是动作游戏,我们就不能直接简单地用Translation连起来了,而应该使用动画融合树。

准备工作:一个人物模型,一个待机动画,一个行走动画,一个奔跑动画。

通常游戏中,我们人物从待机到跑直接切换就行,今天我们加一个行走的过渡效果吧。
创建一个动画控制器AnimatorController,将人物的Animator组件的Controller属性指向我们刚才创建的AnimatorController。
在AnimatorController中添加一个空状态Idel,然后设置动画片断为我们的待机动画。
然后再创建一个动画融合树WalToRun:
无标题
双击融合树进入编辑状态,在右侧的Inspector面板中的Motion列表中添加两个元素,从上到下依次选择我们的行走动画和奔跑动画。
创建float类型动画参数Run,将融合树的Parameter参数设置为Run:
QQ截图20151007164124
最后,将待机状态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从走慢慢过渡到跑咯!

转载于:https://www.cnblogs.com/zhenlong/p/4870956.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值