Time.timeScale = 0时播放粒子系统?
Play a particle system when 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 post 下方的小行星基地 post 确实很有趣,可能值得长期 运行!
一种方法是使用 Time.unscaledDeltaTime
另一种方法是创建您自己的时间管理器,但这需要一些纪律来坚持。 Asteroid Base wrote a nice article on something like this here.
的人
希望对您有所帮助!
我有一个粒子系统爆炸,我想在玩家死亡时播放。这个想法是其他一切都暂停但爆炸仍在继续,就像你死后的吃豆人动画(一切都冻结并且吃豆人死亡动画播放)。
问题是,它行不通。我知道 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 post 下方的小行星基地 post 确实很有趣,可能值得长期 运行!
一种方法是使用 Time.unscaledDeltaTime
另一种方法是创建您自己的时间管理器,但这需要一些纪律来坚持。 Asteroid Base wrote a nice article on something like this here.
的人希望对您有所帮助!