2016-11-06 5 views
0

私はこのチュートリアルnoobtutsを使用しています。スネークのゲームをunityで実行しています。すべて正常に動作していますが、頭がどのように尻尾に衝突しているかを検出できます。 頭はすでに頭の後ろにある尾と衝突しています。頭と頭が衝突し続けていますが、頭が動いたときに頭が尾に当たったときに欲しいと思います。ここ あなたはほとんどそこにいる私のコード蛇のゲームユニティで尻尾と衝突する方法

if (coll.name.StartsWith ("TailPrefab")) 
     { 
       print ("tail colliding"); 
     } 
+0

首から少し離れたところに余分な襟を置きます。上のチェックを適用して、新しい兵士を確認してください。または、それをトリガーにすることができます –

答えて

1

である、あなたはそれがいくつかの変数に応じて、頭や尾のかどうか知っている頭と尾に別のスクリプトを添付したり、それぞれに1つのスクリプトを追加する必要がありますどちらか。簡単にするために、私は頭のスクリプトをデモするだけです: コライダーを頭に付けて、「頭」と呼ばれるtagを付けてください。テールのコライダーにタグ「テール」を与えます。頭部スクリプトでは、衝突のプログラムを作成します:

void OnCollisonEnter(Collider col) 
{ 
    if(col.tag == "tail") 
    { 
      //do what you want to do 
    } 
} 

明確にするには、頭、尾、および身体に別々のゲームオブジェクトが必要です。

1

あなたの頭は慎重に動いているように見えます。つまり、現在から次へと飛びます。

次に、既に目標位置に何かがあるかどうかを確認できます。

SnakeNode[]nodes; 

foreach(SnakeNode node in nodes) 
{ 
    if(Vector3.Distance(head.position, node.position) < 0.01f){ CollisionDetected(); } 
} 

これは擬似コードで、現在の位置を含む何らかのSnakeNodeシステムがあると考えられます。次に、ヘッドがコレクションの一部でないことを確認します(または衝突することになります)。

+0

私はボックスコライダー1 pxの間の単純なギャップを使用して解決します。 – shakac

関連する問題