首先:百度到的Animator倒放方法可以用(https://jingyan.baidu.com/article/d713063593f99f13fdf475e1.html)。

但是 该方法需要在controller中添加参数,如果项目中有很多动画需要倒播,这么做出错率很高,重复劳动也很令人焦虑。

在网上一番搜索找到这位仁兄的方法:https://blog.csdn.net/qq_41752435/article/details/90113402#commentBox

一番测试之后确实可以使用,但是有几点需要补充说明一下:

  1. Animator的播放速度由 Animator.speed 控制,断点后发现,如果不先执行 Animator.StartPlayback()方法,speed的值是不可以被赋负值的,会被置0。所以很多人问为什么speed置-1动画暂停了,因为其实是置0了。
  2. Animator.StartPlayback()方法应该是配合StartRecording()等方法用于动画的录制和回放的,不知道为什么会影响到speed的赋值。
  3. 注意,如果需要倒放动画,需要从最后一帧往前放,和正常播放是相反的,所以需要执行:                                                         ani.Play(clipInfo.clip.name, 0, 1) , 正常的播放是ani.Play(clipInfo.clip.name, 0, 0)

贴上测试代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class AnimatorTest : MonoBehaviour {Animator ani;// Use this for initializationvoid Start () {ani = GetComponent<Animator>();}// Update is called once per framevoid Update () {if(Input.GetKey(KeyCode.A)){Play(1);}else if(Input.GetKey(KeyCode.B)){Play(-1);}else if (Input.GetKey(KeyCode.C)){Play(0.5f);}else if (Input.GetKey(KeyCode.D)){Play(-0.5f);}else if (Input.GetKey(KeyCode.E)){Stop();}}void Play(float speed){if (ani != null){//ani.enabled = false;ani.enabled = true;AnimatorClipInfo[] temps = ani.GetCurrentAnimatorClipInfo(0);AnimatorClipInfo clipInfo = new AnimatorClipInfo();if (temps.Length > 0){clipInfo = temps[0];//获取动画clip}ani.StartPlayback();ani.speed = speed;ani.Play(clipInfo.clip.name, 0, speed < 0 ? 1 : 0);}}void Stop(){AnimatorClipInfo[] temps = ani.GetCurrentAnimatorClipInfo(0);AnimatorClipInfo clipInfo = new AnimatorClipInfo();if (temps.Length > 0){clipInfo = temps[0];}ani.Play(clipInfo.clip.name,0,0);ani.speed = 0;}
}

Unity3d Animator 动画倒放相关推荐

  1. android帧动画倒放,GIF动态图怎么倒放_倒放GIF动态图的简单方法介绍_3DM手游

    GIF动态图怎么倒放?应该有很多网友都想知道吧,看了很多视频倒放的,那么GIF倒放要怎么完成呢?其实方法很简单,不会的网友们,下面就跟着3DM手游网小编一起来看看吧,帮助你快速学会GIF动态图倒放的方 ...

  2. android帧动画倒放,【答疑】Premiere怎么使用时间重置功能实现变速/倒放/静帧效果? - 视频教程线上学...

    1.新建"时间重映射实践"序列,导入所用素材.将视频"滑雪02.wmv"练习拉三次到视频1中,并依此重命名为变速.倒放.静帧,如图1所示. 2.选中" ...

  3. 《时空幻境》的时间倒放玩法!用 Cocos Creator 实现时间回溯

    喜欢研究各种有趣效果的「Cocos Star Writer」Nowpaper,之前同我们分享了<饥荒>同款 2.5D 视角的实现和用 RenderTexture 实现小地图与传送门等等,这 ...

  4. 【Unity3D小技巧】Unity3D中Animation和Animator动画的播放、暂停、倒放控制

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...

  5. Unity中暂停、继续播放、杀死、正放、倒放Dotween动画

    此案例是控制material(材质球)的alpha(透明度)值,对有MeshRenderer的Model外观有不停的渐隐渐显效果 using System.Collections; using Sys ...

  6. 【Unity3D】Animator动画播放时卡死在第一帧BUG系列

    常见因素: 1.Animator在Update或其他每帧执行的协程或方法里疯狂被代码调用. 2.Animator动画播放事件会再次调用Animator动画播放. 3.Animator状态机切换问题,A ...

  7. Unity3D高级动画(Animator)-动画状态机

    动态系统种类: Animation动画状态机:是旧版的动画状态机 Animator动画状态机:是新版的动画状态机,其实就是由Animation组成的(这里我们常用这个) Animator的使用: (1 ...

  8. 用Unity的Animation播放Animator动画Clip

    简单的动画,其实不需要Animator动画状态机管理,用Animation播放效率更高,但可能由于历史遗留问题,或网上下载的第三方资源,得到的是Animator资源,可以在Clip的Debug试图下, ...

  9. 夏目友人帐之撸猫动作倒放

    如果你也想赚钱,实现财务自由,但接触不到优质的人脉和资源,可以到公June浩:成长home,发"资源" ,就会看到我吐血整理的168条保姆级零基础吸金秘籍,跟着我一起亲历毕业5年. ...

最新文章

  1. [改善Java代码]线程优先级只使用三个等级
  2. Android开源项目发布jCenter
  3. python就业方向有哪些-Python的就业方向有哪些?薪资都是多少?
  4. php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
  5. 你是合格的程序员吗?(欢迎大家自测)
  6. 汇编语言--jcxz指令
  7. 2020-11-10(安卓如何传递数据)
  8. 数据分析入门极简书单
  9. sql语句的备份(导入、导出)
  10. Mac Docker安装MySQL5.7
  11. RK3399Pro Android Rock-X 人工智能开发系列(1)
  12. llnmp 环境一键部署 2种安装方法
  13. 安卓使用MediaPlayer播放RTSP无画面的解决办法
  14. 里恩eLearning在线培训考核系统介绍
  15. linux系统维护篇:centos7.9桌面环境安装百度网盘客户端(libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found)
  16. 及c语言实现 pdf,词法分析及其C语言实现.PDF
  17. wps打开服务器文件很慢,wps打开速度慢怎么办-wps打开速度慢解决方法 - 河东软件园...
  18. 未能创建 SSL/TLS 安全通道解决方案
  19. OKCC外呼中心为什么要把语音引入WEB中?
  20. 系统非功能需求(质量属性)

热门文章

  1. JAVA通过oshi获取系统和硬件信息
  2. 基于J2EE的B2C电子商务系统开发- 新闻发布与系统管理子系统设计与实现
  3. 完全图解scrollLeft,scrollWidth,clientWidth,offsetWidth
  4. apache mina 与 SEDA
  5. Oracle---启动与关闭数据库实例
  6. 支付宝-转账到支付宝账号接口(新接口)
  7. 线性回归(Linear Regression)
  8. java发送get请求_java发送http get请求的两种方法(总结)
  9. Ubuntu美化主题、图标
  10. 1.Java环境搭建(Win11)