unity la colisión no funciona, ¿cuál es el problema en mi código?
– UnityAssets3Free
hola , me llamo josel luis y esta vez os traigo
esta nueva pregunta
Estoy tratando de rastrear la colisión en un unity proyecto y no entiendo qué está mal, este es el código con el que estoy trabajando. Estoy tratando de destruir un objeto que colisiona pero no funciona por alguna razón.
void OnCollisionEnter(Collision col)
if (col.collider.gameObject.tag == "Enemy")
Destroy(col.gameObject);
Debug.Log("collided");
golpea el objeto pero no pasa nada, no recibo un mensaje y el objeto no se destruye
2 respuestas 2
Suponiendo que el script que publicaste es un componente de algún tipo de personaje (que debería serlo, ya que estás buscando un Enemigo usando tu etiqueta) y tienes los componentes Rigidbody adecuados con la configuración adecuada y Colliders, deberías usar:
void OnCollisionEnter(Collision col)
// You can also use col.gameObject.tag == "Enemy" since it does the same thing as CompareTag().
// Although using col.gameObject.tag == "Enemy" is less performant.
if (col.gameObject.CompareTag("Enemy"))
// Using print to get proper information on what is happening.
print("destroyed " + col.gameObject.name);
// Destroying the gameObject with the tag "Enemy"
Destroy(col.gameObject);
Si desea destruir el objeto del jugador, debe cambiar la etiqueta en consecuencia y tener este script como un componente enemigo.
Los problemas más comunes si no aparece nada pueden ser:
-
el objeto no tiene componente RigidBody (o RigidBody2D si está en un proyecto 2D)
-
los 2 objetos están en 2 capas que no chocan entre sí (o la misma capa que no choca consigo misma). Verifique las capas de ambos objetos y vaya a Editar -> Configuración del proyecto -> Física (o Physics2D si el proyecto es en 2D) y vaya al final y verifique si las capas chocan entre sí (la casilla de verificación está activada)
-
uno de los 2 colisionadores es en 2D y el otro en 3D
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
por hoy,hasta la proxima