当前位置:   article > 正文

【Unity】通过实时记录模拟时间倒退效果回放_unity 记录退出时间

unity 记录退出时间
有一些游戏提供了回退的功能,那么在游戏开发中如何实现时间倒退这个效果呢,相信会有很多人想知道,为此下面就给大家介绍下实现时间倒退效果的方法,一起来看看吧。
  
  一个简单的思路就是用Stack来记录物体的Position和Rotation,当需要时间回退的时候就Pop出来,赋值到物体上。不过为了可以进行拓展,比如只能回退到某段时间内的,而不是一下子回退到最开始的地方,我们需要剔除太久之前的信息。如下图:
Unity如何实现时间倒退效果  
  因此我选择使用List而不是Stack。
  
   代码(完整代码在最下面)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Pos
Vector3 pos = this .transform.position;
float horizontal = Input.GetAxis( "Horizontal" );
float vertical = Input.GetAxis( "Vertical" );
 
if (Mathf.Abs(horizontal) > 0.0001f) //左右移动
{
     pos.x += Time.deltaTime * horizontal * Speed;
}
if (Mathf.Abs(vertical) > 0.0001f) //上下移动
{
     pos.y += Time.deltaTime * vertical * Speed;
}
this .transform.position = pos;
 
HistoryPos.Add(pos);
  
  这里HistoryPos就是我们用来存储历史位置的List,我们每帧都存储物体的位置。
  
  当我们需要时间回退时,可以每帧调用下面的代码:
1
2
3
4
5
6
if (HistoryPos.Count > 0)
{
     int index = HistoryPos.Count - 1;
     this .transform.position = HistoryPos[index];
     HistoryPos.RemoveAt(index);
}
  
  这就是每次取出最后的位置(即最新的),赋值到物体上
  
  当我们需要限制时间回退的时间跨度,可以在HistoryPos.Add后加上下面这些代码:
1
2
3
4
5
6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/108232
推荐阅读
相关标签
  

闽ICP备14008679号