【问题标题】:Particle system DontDestroyOnLoad粒子系统 DontDestroyOnLoad
【发布时间】:2015-09-25 18:26:04
【问题描述】:

我在游戏中追求的是当玩家和行星发生碰撞时,玩家会消失,留下粒子系统形式的爆炸效果。就在之后(可能是半秒),我希望“游戏结束”场景出现在它的位置。到目前为止,这是我所拥有的:

void OnCollisionEnter2D (Collision2D col) {
    if (col.gameObject.tag == "enemyPlanet") {
        Instantiate (explosion, thingToMove.transform.position, thingToMove.transform.rotation);
        ui.gameOverActivated ();
        Destroy (gameObject);
        am.rocketBang.Play();
        Application.LoadLevel ("gameOverScene2");
    }
}

我遇到的问题是粒子出现但没有像爆炸一样移动。我猜这要么是因为游戏结束场景正在加载,要么是因为它的位置是正在被摧毁的玩家 (thingToMove)。

我试过了:

public void Awake() {
    DontDestroyOnLoad (transform.gameObject);
}

但同样的事情也会发生。如果是因为播放器正在被销毁,我该如何让它在播放器被销毁时代替它?

我希望这是有道理的,并在此先感谢。

【问题讨论】:

    标签: c# unity3d particle-system unity3d-2dtools


    【解决方案1】:

    您可以使用Invoke 方法在指定的延迟后调用游戏。

    void OnCollisionEnter2D (Collision2D col) {
        if (col.gameObject.tag == "enemyPlanet") {
            Instantiate (explosion, thingToMove.transform.position, thingToMove.transform.rotation);
            ui.gameOverActivated ();
            am.rocketBang.Play();
            Invoke( "over", 2.0f );
    
        }
    }
    
    void over(){
        Destroy (gameObject);
        Application.LoadLevel ("gameOverScene2");
    }
    

    【讨论】:

    • 正确。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2010-11-30
    • 2015-06-02
    相关资源
    最近更新 更多