OnCollisionenter funktioniert nicht
-
27-10-2019 - |
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?
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.