Unity3d Animator 动画倒放
首先:百度到的Animator倒放方法可以用(https://jingyan.baidu.com/article/d713063593f99f13fdf475e1.html)。
但是 该方法需要在controller中添加参数,如果项目中有很多动画需要倒播,这么做出错率很高,重复劳动也很令人焦虑。
在网上一番搜索找到这位仁兄的方法:https://blog.csdn.net/qq_41752435/article/details/90113402#commentBox
一番测试之后确实可以使用,但是有几点需要补充说明一下:
- Animator的播放速度由 Animator.speed 控制,断点后发现,如果不先执行 Animator.StartPlayback()方法,speed的值是不可以被赋负值的,会被置0。所以很多人问为什么speed置-1动画暂停了,因为其实是置0了。
- Animator.StartPlayback()方法应该是配合StartRecording()等方法用于动画的录制和回放的,不知道为什么会影响到speed的赋值。
- 注意,如果需要倒放动画,需要从最后一帧往前放,和正常播放是相反的,所以需要执行: 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 动画倒放相关推荐
- android帧动画倒放,GIF动态图怎么倒放_倒放GIF动态图的简单方法介绍_3DM手游
GIF动态图怎么倒放?应该有很多网友都想知道吧,看了很多视频倒放的,那么GIF倒放要怎么完成呢?其实方法很简单,不会的网友们,下面就跟着3DM手游网小编一起来看看吧,帮助你快速学会GIF动态图倒放的方 ...
- android帧动画倒放,【答疑】Premiere怎么使用时间重置功能实现变速/倒放/静帧效果? - 视频教程线上学...
1.新建"时间重映射实践"序列,导入所用素材.将视频"滑雪02.wmv"练习拉三次到视频1中,并依此重命名为变速.倒放.静帧,如图1所示. 2.选中" ...
- 《时空幻境》的时间倒放玩法!用 Cocos Creator 实现时间回溯
喜欢研究各种有趣效果的「Cocos Star Writer」Nowpaper,之前同我们分享了<饥荒>同款 2.5D 视角的实现和用 RenderTexture 实现小地图与传送门等等,这 ...
- 【Unity3D小技巧】Unity3D中Animation和Animator动画的播放、暂停、倒放控制
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...
- Unity中暂停、继续播放、杀死、正放、倒放Dotween动画
此案例是控制material(材质球)的alpha(透明度)值,对有MeshRenderer的Model外观有不停的渐隐渐显效果 using System.Collections; using Sys ...
- 【Unity3D】Animator动画播放时卡死在第一帧BUG系列
常见因素: 1.Animator在Update或其他每帧执行的协程或方法里疯狂被代码调用. 2.Animator动画播放事件会再次调用Animator动画播放. 3.Animator状态机切换问题,A ...
- Unity3D高级动画(Animator)-动画状态机
动态系统种类: Animation动画状态机:是旧版的动画状态机 Animator动画状态机:是新版的动画状态机,其实就是由Animation组成的(这里我们常用这个) Animator的使用: (1 ...
- 用Unity的Animation播放Animator动画Clip
简单的动画,其实不需要Animator动画状态机管理,用Animation播放效率更高,但可能由于历史遗留问题,或网上下载的第三方资源,得到的是Animator资源,可以在Clip的Debug试图下, ...
- 夏目友人帐之撸猫动作倒放
如果你也想赚钱,实现财务自由,但接触不到优质的人脉和资源,可以到公June浩:成长home,发"资源" ,就会看到我吐血整理的168条保姆级零基础吸金秘籍,跟着我一起亲历毕业5年. ...
最新文章
- [改善Java代码]线程优先级只使用三个等级
- Android开源项目发布jCenter
- python就业方向有哪些-Python的就业方向有哪些?薪资都是多少?
- php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
- 你是合格的程序员吗?(欢迎大家自测)
- 汇编语言--jcxz指令
- 2020-11-10(安卓如何传递数据)
- 数据分析入门极简书单
- sql语句的备份(导入、导出)
- Mac Docker安装MySQL5.7
- RK3399Pro Android Rock-X 人工智能开发系列(1)
- llnmp 环境一键部署 2种安装方法
- 安卓使用MediaPlayer播放RTSP无画面的解决办法
- 里恩eLearning在线培训考核系统介绍
- linux系统维护篇:centos7.9桌面环境安装百度网盘客户端(libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found)
- 及c语言实现 pdf,词法分析及其C语言实现.PDF
- wps打开服务器文件很慢,wps打开速度慢怎么办-wps打开速度慢解决方法 - 河东软件园...
- 未能创建 SSL/TLS 安全通道解决方案
- OKCC外呼中心为什么要把语音引入WEB中?
- 系统非功能需求(质量属性)
热门文章
- JAVA通过oshi获取系统和硬件信息
- 基于J2EE的B2C电子商务系统开发- 新闻发布与系统管理子系统设计与实现
- 完全图解scrollLeft,scrollWidth,clientWidth,offsetWidth
- apache mina 与 SEDA
- Oracle---启动与关闭数据库实例
- 支付宝-转账到支付宝账号接口(新接口)
- 线性回归(Linear Regression)
- java发送get请求_java发送http get请求的两种方法(总结)
- Ubuntu美化主题、图标
- 1.Java环境搭建(Win11)