Frage

Ich habe ein Problem mit meiner OnCollisionenter -Funktion in Unity3D. Die Sache ist, dass ich einen Dritt -Person -Controller habe, der, wenn er mit einem Boudary -Objekt kollidiert, ein anderes GameObject und ein Etikett aktivieren sollte.

So habe ich meinen Code gegeben

function OnCollisionEnter(collision : Collision)
{
   if(collision.gameobject1.tag=="tag1")
   {
     // activate game object and label
   }
   if(collision.gameobject2.tag=="tag2")
   {
      // deactivate game object and label
   }
}

Das Problem ist, dass es sowohl in die Loops eintritt als auch ich weiß nicht, ob das, was ich gegeben habe, falsch oder wie ich gegeben habe. Wo gehe ich falsch?

War es hilfreich?

Lösung

Wenn das OnCollisionEnterer -Ereignis schießt (Sie können einen Druck hinzufügen, um sicherzustellen), gibt es zwei Dinge zu überprüfen: Tags und Kollider

Stichworte

Versuchen

collision.transform.tag

Stellen Sie außerdem sicher, dass Sie das richtige Tag für das GameObject ausgewählt haben.

Kollider

In Unity3d treten die Kollisionsrufe (OnCollisionEnter usw.) nur unter bestimmten Umständen auf. EX: Ein GameObject (GameObject1) mit einem Collider und einer starren Komponente kollidiert mit einem statischen (nicht bewegenden) GameObject (GameObject2), der nur einen Collider hat.

Ich würde mich ansehen Box Collider Referenz Denn unten ist a Kollisionsaktionsmatrix Dies erklärt unter den Bedingungen, die Kollisionen auftreten.

Andere Tipps

Bitte fügen Sie der Einheit Tags hinzu. Vielleicht fügen Sie Objekten keine Tags hinzu. Bitte hinzufügen tag1 und tag2 Wählen Sie Ihren Tags Ihre Objekte aus und wählen Sie tag1 oder tag2.

enter image description here

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top