Time.timeScale = 0时播放粒子系统?

时间:2015-09-07 20:53:20

标签: time unity3d particle-system

当玩家死亡时,我想要玩一个粒子系统爆炸。这个想法是其他一切停顿但爆炸仍在继续,比如当你死的Pacman动画(一切都冻结而且pacman死亡动画播放)。

麻烦的是,它不会起作用。我知道Time.timeScale = 0暂停了所有内容,我尝试使用这个脚本来解决这个问题,但它似乎并没有起作用:

void Update()
 {
     if (Time.timeScale < 0.01f)
     {
         particleSystem.Simulate(Time.deltaTime, true, false);
     }
 }

我也尝试了这个,但它也不起作用:

 private ParticleSystem pSystem;

 public void Awake()
 {
     pSystem = gameObject.GetComponent<ParticleSystem>();
 }

 public void Play()
 {
     pSystem.Simulate(Time.unscaledDeltaTime,true,true);
 }

 public void Update()
 {
     pSystem.Simulate(Time.unscaledDeltaTime,true,false);
 }

我已尝试使用附加到我的爆炸粒子系统预制件的脚本来编写此代码,该脚本会在您死亡时在玩家的位置进行实例化。

谢谢!

更新: 事实证明我曾尝试使用particleSystem.Simulate(Time.unscaledDeltaTime, true, false);,但我在FixedUpdate()而不是Update()中调用它。

然而,Garfty发布的Asteroid Base帖子非常有趣,从长远来看可能值得做!

1 个答案:

答案 0 :(得分:1)

您可以使用Time.unscaledDeltaTime

的一种方法

另一种可以接近这种方式的方法是创建自己的时间管理器,但需要遵守一些规则。 Asteroid Base的人写了一篇关于类似here的文章。

我希望这有帮助!