2017-12-06 6 views
0

の中に他の衝突を求める "groundBlack" & "groundWhite"とタグ付けされた2つのタイプのグラウンドがあります。ジャンプするために、コライダーが "ground"で始まるタグを残しているかどうかを確認します。OnCollisionEx2D - Unity

void OnCollisionExit2D(Collision2D col){ 

    if (col.gameObject.tag.Substring (0, 5) == "ground") { 
     playerController.grounded = false; 
    } 

    } 

問題は、プレイヤーがある場所から別の場所に移動するたびに、地面が偽になり、私はしたくないということです。 OnCollisionExit2Dが地面にタグ付けされた他のオブジェクトとまだ衝突している場合、または別の方法でそれを知る方法はありますか?少し早いですがお礼を!

答えて

3

col.GetContactsあなたの現在の連絡先をすべてお知らせします。うまくいけば、それはまだOnCollisionExitに取り込まれるはずです。それ以外の場合は、エントリの追加、終了時の削除という衝突のリストを保持することができます。次に、あなたのリストが空のときにのみ、偽に設定します。

また、.Substring (0, 5) == "ground"の代わりに.StartsWith("ground")を使用してください。比較のためだけに新しい文字列を割り当てる必要はありません。

+0

私は2番目のオプションが好きです、非常に便利です!どうもありがとうございます! –