【问题标题】:Play a particle system when Time.timeScale = 0?Time.timeScale = 0 时播放粒子系统?
【发布时间】:2015-09-14 17:43:01
【问题描述】:

我想在玩家死亡时播放粒子系统爆炸。其他一切都暂停但爆炸仍在继续的想法,就像你死时的吃豆人动画(一切都冻结并播放吃豆人死亡动画)。

问题是,它不起作用。我知道 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 发布的小行星基地帖子真的很有趣,从长远来看可能值得一试!

【问题讨论】:

    标签: time unity3d particle-system


    【解决方案1】:

    一种方法是使用Time.unscaledDeltaTime

    另一种处理此类事情的方法是创建自己的时间管理器,但它需要遵守一些纪律。 Asteroid Base 的人写了一篇关于 here 这样的好文章。

    我希望这会有所帮助!

    【讨论】:

    • 这看起来很有帮助,我稍后会尝试!我想知道的一件事是,目前,当我将 Timescale 设置为 0 时,我暂停了 3 件事。遵循 Asteroid Base 技术会更容易,还是你认为暂停每个单独的组件更容易?跨度>
    • 这完全取决于您要达到的目标,我个人喜欢 Asteroid Base 方法,因为它提供了很大的灵活性,但正如前面提到的,使用它确实需要一些纪律。尝试两者,看看哪个适合你:)
    • 试一试,虽然有点混乱,但它确实有效!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多