我在游戏中所追求的是当玩家与行星发生碰撞时,玩家消失,以粒子系统的形式留下爆炸效果。就在之后(也许是半秒钟)我希望“游戏结束”场景出现在它的位置。这是我到目前为止所做的:
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);
}
但同样的事情发生了。如果是因为玩家被摧毁了,我怎么能在玩家被摧毁时让它在玩家的位置呢?
我希望这是有意义的,并提前感谢。
答案 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");
}