2015-09-25 201 views
1

我在我的遊戲中發生的事情是,當玩家和行星發生碰撞時,玩家會消失,並以粒子系統的形式留下爆炸效果。之後(也許半秒),我希望「遊戲結束」場景出現在它的位置。這是我到目前爲止:粒子系統DontDestroyOnLoad

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

但同樣的事情發生。如果是因爲玩家被摧毀了,那麼我將如何在玩家被破壞的時候讓它代替玩家呢?

我希望這是有道理的,並提前感謝。

回答

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"); 
} 
+0

現貨。非常感謝你。 – JGrn84