2016-10-27 3 views
0

私はdestroy内にgameObjectを作成し、このオブジェクトに対してDestroy()メソッドを2秒間の遅延時間で呼び出しました。GameObjectの遅延Destroy()コールをキャンセルします。

Destroy(gameObject,2.0f);

コライダーと他のゲームオブジェクトは、このゲームオブジェクトと衝突した場合にどのような私が欲しいのは、私は、この特定のゲームオブジェクトのために破壊するコールをキャンセルしたいです。

私は、新しい持続時間で同じgameobjectでもう一度destroyを呼び出そうとしましたが、古い期間に基づいてまだ破壊されています。

void OnCollisionEnter2D(Collision2D coll) 
{ 
    //Debug.Log("Inside Enter"); 
    if (coll.gameObject.tag == "Ball") 
    { 
     Destroy(gameObject, reInitializeLifeOfLine); 
     Debug.Log("Inside Enter"); 
    } 
} 

は、誰かがあなたがDestroy()を呼び出した後にゲームオブジェクトの破壊を防止するための組み込みの方法はありません。この

+0

これを解決できましたか?既存の回答があなたの要件を満たしていない場合は、質問を更新するかコメントを追加してください。 – Serlite

答えて

1

を達成する方法を提案してくださいすることができます。しかし、あなたが必要とするものを正確に達成するために、他の人が調査したさまざまな回避策があります。

ここでは、手動でキャンセルすることができInvoke()を使用して、(Unity Answersから適応)単純なものです:

void OnCollisionEnter2D(Collision2D coll) 
{ 
    if (coll.gameObject.tag == "Ball") 
    { 
     CancelInvoke("DestroySelf"); 
     Invoke("DestroySelf", reInitializeLifeOfLine); 
    } 
} 

void DestroySelf() { 
    Destroy(gameObject); 
} 

は、この情報がお役に立てば幸い!ご質問がある場合はお知らせください。

+0

これは私の問題を解決しませんでした。まだオブジェクトが最初に遅れて破壊されていた。だからこれを解決するために、私はタイマーを使いました。詳細は私の答えを見てください –

1

私はfloat型の変数startTimeを作成し、[スタート]()メソッドでそれを初期化コード

float reInitializeLifeOfObject = 5.0f; 
float lifeTimeOfObject = 3f; 
private float startTime; 

void Start() 
{ 
    startTime = Time.time; 
} 

void FixedUpdate() 
{ 
    // This will destroy the gameObject in 5 second 
    if((Time.time - startTime) > lifeTimeOfObject) 
    { 
     Destroy(gameObject.transform.parent.gameObject); 
    } 
} 
void OnCollisionEnter2D(Collision2D coll) 
{ 
    if (coll.gameObject.tag == "Ball") 
    { 
     // Re-initializing the startTime so that Object is not abruptly destroy while ball is still 
     // interacting with game object 
     startTime = Time.time; 
    } 
} 

の下に使用して問題を解決しました。 FixedUpdateで、5秒が経過したかどうかを確認しています。はいの場合、オブジェクトを破棄します。

ここで衝突部分については、OnCollisionEnter2D()をチェックしています。オブジェクトがコライダーとやりとりしている場合は、startTimeにvalueを現在の時間で再割り当てしています。

これは私の問題を解決しました

関連する問題