粒子系统DontDestroyOnLoad

时间:2015-09-25 18:26:04

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

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

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);
}

但同样的事情发生了。如果是因为玩家被摧毁了,我怎么能在玩家被摧毁时让它在玩家的位置呢?

我希望这是有意义的,并提前感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用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");
}