2017-03-18 8 views
0

私はゲームを作っています(地下鉄サーファーに似ています)、私は多くの小さなキューブでできています。そして、私は、プレーヤーが床との衝突をやめたときに何かをやりたいと思っています。私はプレイヤーが床に衝突し停止したか、単に別の階の1片から移動した場合、私が知っていることはありませんOnTriggerExit(他の衝突)を使用する場合でも:ユニティ。オブジェクトが関数内で別のものと衝突しているかどうか確認します。

OnTriggerExit (Collider other){ 

    if (other.tag == "floor") { 

     if(/*Object isn't coliding with any other object with the tag "floor" (Or simply isn't coliding with the other piece of the floor) */){ 
      //Do something 
     } 

    } 
} 
+0

あなたは 'OnCrror ...'の 'OnTrigger ...' instadを使用しています。 –

答えて

0

これは、ゲームのニーズに依存します。あなたがSubway Surferという名前をつけたので、私はプレイヤーのZ座標に行きます。

heightFromGroundフィールドをプレーヤクラスに追加します(プレーヤとプラットフォームの下のz軸の差として計算されます)。

次に、heightFromGroundがしきい値より高い場合は、プレイヤーがジャンプしていることがわかります。 これにより、地面からの高さに基づいてキャラクターのアニメーションを制御することができます(これにより、彼は着陸準備をして、実行状態に移行することができます)。

異なるプラットフォームを異なる高さにするには、実行時に現在プレーヤーの下にあるプラットフォームを知る必要があります。

これは、衝突チェックを避けるためのアプローチです。

アニメーションのレベルを必要とせず、衝突を継続して使用する場合は、フィールドint touchingPlatforms = 1;を追加してOnCollisionEnterに1を加え、OnCollisionExitから1を減算するだけです。 touchingPlatformsが0の場合、プレーヤーはジャンプしています。

関連する問題