Pregunta

Tengo un problema con mi función OnCollisionEenter en Unity3D. La cuestión es que tengo un controlador de tercera persona que si choca con un objeto Boudary debería activar otro gameObject y una etiqueta.

Así es como le he dado mi código

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

El problema es que está entrando en los bucles y no sé si lo que he dado es incorrecto o la forma en que he dado. ¿Dónde me voy a equivocar?

¿Fue útil?

Solución

Si el evento OnCollisionEenter está disparando (puede agregar una impresión para asegurarse), entonces hay dos cosas para verificar: etiquetas y coliders

Etiquetas

Probar

collision.transform.tag

También verifique que haya seleccionado la etiqueta correcta para el GameObject.

Colidentes

En unity3d, las devoluciones de llamada de colisión (OnCollisionEenter, etc.) solo ocurren bajo ciertas circunstancias. Ej: un GameObject (GameObject1) con un colider y un componente de cuerpo rígido colisionará con un GameObject estático (no móvil) (GameObject2) que solo tiene un colider.

Yo miraría Referencia de colisionador de caja Porque en la parte inferior hay un Matriz de acción de colisión Eso explica en qué condiciones ocurren las colisiones.

Otros consejos

Agregue las etiquetas a la unidad. Quizás no agregue etiquetas a los objetos. Por favor añadir tag1 y tag2 a sus etiquetas, seleccione sus objetos y seleccione tag1 o tag2.

enter image description here

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top