Unity3D - 动作动画忽略timeScale

近期在调战斗时的动画与特效。Unity3D对加/减速提供了Time.timeScale支持。可是,timeScale提供的是全局的时间缩放,而我们有些动作或动画是不希望被timeScale加减速的。比方,《刀塔传奇》中播放大招时。除了大招特效,全部别的动作/动画都暂停。

以下各自是Animation、Animator和粒子特效的ignoreTimeScale方法。

Animation

Time.realtimeSinceStartup记录是不受timeScale影响的真实时间,利用它来在每一帧採样播放Animation。

代码片段例如以下:

AnimationState animState = animation[clipName]; // 当前动画状态

curTime = Time.realtimeSinceStartup; // 当前真实时间
deltaTime = curTime - lastFrameTime; // 此帧与上一帧的时间间隔
lastFrameTime = curTime; // 记录此帧时间,下一帧用
progressTime += deltaTime; // 动画已播放时间
animState.normalizedTime = progressTime / currState.length; // 动画规范化时间[0-1]
animation.Sample(); // 在当前状态对动画进行採样,当你想显式设置动画状态而且对它取样的时候使用

Animator

Animator _animator = ...;
public void Update() {
    _animator.updateMode = AnimatorUpdateMode.UnscaledTime; // 指定该Animator更新模式为不受scale影响
}

粒子特效

对于ParticleEmitter

ParticleEmitter _emitter = ...;
public void Update() {
    _emitter.Simulate(Time.unscaledDeltaTime);
}

对于ParticleSystem

ParticleSystem _particleSystem = ...;
public void Update() {
    _particleSystem.Simulate(Time.unscaledDeltaTime, true, false);
}
时间: 2024-08-11 09:53:54

Unity3D - 动作动画忽略timeScale的相关文章

(转)Unity3D - 动作动画忽略timeScale

转自:http://blog.csdn.net/ynnmnm/article/details/46866347 最近在调战斗时的动画与特效,Unity3D对加/减速提供了Time.timeScale支持.但是,timeScale提供的是全局的时间缩放,而我们有些动作或动画是不希望被timeScale加减速的.比如,<刀塔传奇>中播放大招时,除了大招特效,所有别的动作/动画都暂停. 下面分别是Animation.Animator和粒子特效的ignoreTimeScale方法. Animation

Unity3D 骨骼动画原理学习笔记

最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭哧吭哧的~ 首先列出学习参考的前人的文章,本文较多的参考了其中的表述: 1.骨骼动画详解 :http://blog.csdn.net/ccx1234/article/details/6641944,不过这篇文章的原文已经被csdn封了:D,可以看看对应的转载的文章也行 2.OpenGL10-骨骼动画原理篇:http://www.cnblogs.com/zhanglitong

Unity3d Mecanim动画系统Animator学习笔记

1. unity3d Mecanim学习  Unity3d新版动画系统网上的介绍很多,但多是流水笔记,外人很难看明白,后来我 终于找到介绍的比较明白的两个作者,特别感谢.一个是58开发网的乐天老师,课程 视频网址:http://www.58kaifa.com/course/24, 这是一个免费的视频课程,讲解的 很仔细,很清除.另一个是博客园的 阿诚de窝,文章地址:http://www.cnblogs.com/hammerc/category/647246.html, 各个控制面板上的参数含义

libgdx Action 动作 动画

Libgdx中有个类Actions, 从它开始顺藤摸瓜就能把哪些简单的Action快速掌握 见代码: 1 public class ActionTestScreen implements Screen,InputProcessor{ 2 private Stage stage; 3 private Texture texture; 4 private Image img; 5 6 @Override 7 public void render(float delta) { 8 Gdx.gl.glC

Cocos2d-x 3.0 动作,动画

//执行一个action动作对象 runAction("action对象"); //暂停一个对象的动作 Director::sharedDirector()->getActionManger()->pauseTarget("对象"); //暂停所有对象的动作 Director::sharedDirector()->getActionManager()->pauseAllRunningActions(); //暂停所有对象的动作及其更新函数 p

unity3d 射线扫描 忽略图层

原地址:http://blog.csdn.net/w88193363/article/details/38331205 函数说明 static RaycastHit2D[] RaycastAll(Vector2origin,Vector2direction,float distance = Mathf.Infinity,int layerMask = DefaultRaycastLayers,float minDepth = -Mathf.Infinity,float maxDepth = Ma

Unity3D骨骼动画的分解(CleanData.Ani详解)

CleanData是什么 CleanData以前没有特定的名字,(在easydown这个开源项目中,作为一个GameObjParser模块存在).在某三国项目中,我们使用GameObjParser将NGUI 的预设保存为自定义格式(替代了assetbundle方案),以实现不论任何平台都可以使用同一份资源.在easydown的演示中GameObjParser也将一个简单的模型场景保存为自定义格式并加载.so.CleanData是想去做AssetBundle的工作,但是格式是我们自定义的,细节更透

unity3d 纹理动画

不知道大家有没有玩过赛车游戏 赛车游戏的跑道有路标,如下图 玩过赛车游戏的都知道,大多数赛车游戏的路标是会动的,如上图,它会从右往左运动 不会发动态图,大家脑补一下吧 没有玩过赛车游戏的也不要紧,大家见过游戏中的瀑布或者湖面吗?如下图:高山流水 当然,我这个贴图的效果不是很好,不过我这里要说的是原理,不妨碍,我们继续 图中的瀑布从上往下流动 我们都知道,如果用粒子的话,有几百个瀑布,在手机上肯定是非常卡的 差一点的手机说不定游戏刚打开就未响应了 除非要求是非常逼真的那种水才用粒子系统,能不用尽量

unity3d DOTween动画实现数字变化动画

在游戏中,经常有这样的需要数字从1逐步增加到一个值N,而动画由1到这个值N的变化过程中,每变化一次,都是有动画,但是往往这个动画还没结束,下个动画就来了.想解决这个问题,可以使用下面这个思路. 即这个动画没播完之前,下个动画不能播,播完一个动画后,再进行下一个.下面请看代码. using UnityEngine; using System.Collections; using UnityEngine.UI; using DG.Tweening; public class InGameFlower