Unity Animator动画倒播方法

本文介绍了一种在Unity中实现动画倒播的方法:通过在Animator Parameters中添加一个float变量,并将其赋给需要倒播的动画片段。在需要倒播动画时,通过代码设置此变量为-1来达到倒播效果。
 在Animator Parameters中添加一个float变量  然后将这个变量赋给需要倒播的动画片段


最后在需要倒播的时候运行代码 

Animator.Play("Sing");
Animator.SetFloat("SingSpeed", -1);

Unity中使Animator当前动画有两种可行的方法,下面分别详细介绍: ### 方法一 通过设置动画参数来控制动画放速度,当速度为负数时,动画就会。示例代码如下: ```csharp using UnityEngine; public class ReverseAnimation : MonoBehaviour { public Animator animator; void Start() { animator = GetComponent<Animator>(); } void Update() { if (Input.GetKeyDown(KeyCode.R)) { // 设置动画速度为负数,实现 animator.SetFloat("Speed", -1); } } } ``` 在上述代码中,`animator.SetFloat("Speed", -1)`将动画放速度设置为 -1,从而实现动画。你需要在Animator控制器中创建一个名为`Speed`的Float类型的参数,并将其默认值设置为 1(正向放)。 ### 方法二 先获取当前动画已经正向放了的归一化时间,用 1 减去这个归一化时间作为开始反向放的起始时间,使用`Animator.Play(string stateName, int layer, float normalizedTime)`这个重载方法来实现。示例代码如下: ```csharp using UnityEngine; public class ReverseAnimation2 : MonoBehaviour { public Animator animator; public string stateName; public int layer = 0; void Start() { animator = GetComponent<Animator>(); } void Update() { if (Input.GetKeyDown(KeyCode.R)) { // 获取当前动画状态信息 AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(layer); // 获取当前动画已经正向放了的归一化时间 float currentNormalizedTime = stateInfo.normalizedTime; // 计算反向放的起始时间 float reverseStartTime = 1 - currentNormalizedTime; // 从指定的归一化时间开始反向动画 animator.Play(stateName, layer, reverseStartTime); // 设置动画速度为负数,实现 animator.speed = -1; } } } ``` 在上述代码中,先获取当前动画已经正向放了的归一化时间,用 1 减去这个归一化时间得到反向放的起始时间,然后使用`animator.Play(stateName, layer, reverseStartTime)`从指定的归一化时间开始反向动画,最后将动画速度设置为负数,实现
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值