当前位置:   article > 正文

使用unity Timeline工具制作“子弹时间”效果_unity bullettime

unity bullettime

子弹时间,就是黑客帝国中,可以看得到子弹运动那种。使用Timeline加速或者减速游戏里得时间,这样就不需要更改运动代码也可以获得对象运动速度的改变。

首先,创建一个Timeline Editor窗口:

Window->Timeline Editor;

创建一个空对象用来存放一个新的Timeline,这个空对象类似于一般UIManager,EventManager差不多的功能,把空对象命名为PlayableDirector,给PlayableDirector创建一个Timeline后,Inspector面板就会有一个PlayableDirector组件:

我们在Timeline Editor中add一个playable Track用来管理时间代码:

回到scene中,随便创建一个对象,比如:Cube。然后写一个旋转的脚本:

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Rotate : MonoBehaviour
  5. {
  6. void Update ()
  7. {
  8. transform.Rotate(transform.up, 200 * Time.deltaTime);
  9. }
  10. }

Rotate.cs挂在Cube上;

然后写我们的子弹时间脚本:

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Playables;
  5. using UnityEngine.Timeline;
  6. public class BulletTimePlayable : BasicPlayableBehaviour
  7. {
  8. public float BulletTimeTimeScale;
  9. private float _originalTimeScale = 1f;
  10. public override void ProcessFrame(Playable playable, FrameData info, object playerData)
  11. {
  12. //检查是否在播放,防止在短条前开始
  13. if (playable.GetTime() <= 0)
  14. return;
  15. Time.timeScale = Mathf.Lerp (_originalTimeScale, BulletTimeTimeScale, (float)(playable.GetTime() / playable.GetDuration()));
  16. }
  17. public override void OnBehaviourPlay(Playable playable, FrameData info)
  18. {
  19. _originalTimeScale = Time.timeScale;
  20. }
  21. }

把BulletTimePlayable.cs拖到Timeline Editor中的Playable中,调整短条的长短,使用ctrl + D可以复制短条,复制出多个短条,给每个短条赋予不同的时间参数,运行时,就可以看到时间加速和减速的效果:

在2中的参数中,大于1为加速,小于1为减速



我的微信公众号;

公众号已接入智能回复,欢迎怼我

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/95476
推荐阅读
相关标签
  

闽ICP备14008679号