2015-09-07 21 views
0

我有一个粒子系统爆炸,我想在玩家死亡时玩。这个想法是,所有其他的东西都会暂停,但是爆炸仍在继续,就像你死时吃的Pacman动画(一切冻结,pacman死亡动画播放)。当Time.timeScale = 0时播放粒子系统?

问题是,它不会工作。我知道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发布的小行星基地帖子非常有趣,可能值得从长远看!你可以做到这一点

回答

1

一种方式是通过使用Time.unscaledDeltaTime

你可以接近这样的事情是通过创建你自己的时间管理的另一种方式,但它需要一些纪律来坚守。 Asteroid Base的人写了一篇好文章,内容如下:here

我希望这有助于!

+0

这看起来很有帮助,我会稍后再试! 我想知道的一件事是,此刻,当我将时间刻度设置为0时,我暂停了3件事情。跟随小行星基础技术会更容易吗,还是您认为暂停每个单独的组件会更容易? – Tom

+1

它完全取决于你想达到的目标,我个人喜欢小行星基地的方法,因为它提供了很大的灵活性,但如前所述,它需要一些纪律来使用它。 尝试两种,看看哪些适合你:) – Garfty

+0

试了一下,虽然它有点混乱,它的工作原理!谢谢! – Tom