Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

90
Vistas
Diferenciar colisionadores de Gameobject con la misma etiqueta

En mi OnTriggerEnter2D() tengo una condición if que verifica si el colisionador correcto está colisionando con mi otro Gameobject. Para un Ejemplo simple: Hay un León y un Elefante con la Etiqueta "Animal" con el mismo script que maneja sus variables. Según cuál de los dos animales ingrese al otro Colisionador, quiero ejecutar un código específico. Traté de darles a ambos animales una cadena que indica de qué tipo son, como en Lion is a Lion. Pero eso no funcionó.

 public void OnTriggerEnter2D(Collider2D a_collider2D) { if (a_collider2D.gameObject.CompareTag("Animal") && m_sAnimalStat.m_sAnimalType.Equals("Lion")) {//code here if its a Lion}

¿Hay otra forma de diferenciar los colisionadores? Ponerlos en diferentes capas tampoco funcionó. OnTriggerEnter2D está en el otro Gameobject hacia donde caminan los animales. El AnimaStatManager está en Lion Prefab que tiene la etiqueta "Animal". Como dije, maneja varias variables para todos mis animales. Como m_sAnimalType. m_aAnimalStat=GameObject.FindGameObjectWithTag("Animal").GetComponent(); --> solo para poder acceder a lo que necesito de ese script.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Los objetos de Unity se definen por composición . Esto significa que un objeto se define por sus componentes . Entonces, en mi opinión, un mejor enfoque podría ser tener un componente "Lion" en un objeto Lion, excepto que tenga una razón específica para no hacerlo.

Tomas tu class Animal : MonoBehaviour y creas una clase secundaria para cada especie: class Lion : Animal , class Elephant : Animal , etc.

Entonces, simplemente puedes hacer:

 public void OnTriggerEnter2D(Collider2D a_collider2D) { if (a_collider2D.GetComponent<Lion>() != null) { // Lion } else if (a_collider2D.GetComponent<Elephant>() != null) { // Elephant } else if (a_collider2D.GetComponent<...>() != null) { // ... } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda