Unity: detección de colisiones 2D mediante etiquetas
– UnityAssets3Free
bienvenido , soy Camilo y hoy os traigo
esta unity pregunta
void OnCollisionEnter2D(Collision2D collision)
if (collision.gameObject.tag == "Bullet")
Destroy(gameObject);
Debug.Log("hit");
Este es mi código, aprecio que haya muchas otras fuentes, sin embargo, lo he buscado en Internet y no puedo entender dónde me estoy equivocando. Sé que probablemente sea algo tan pequeño. Estoy tratando de detectar la colisión y destruir «este» objeto del juego usando la etiqueta. El Bullet prefabricado tiene la etiqueta Bullet y está escrito exactamente igual, ambos gameObjects tienen un rigidbody y un colisionador de caja 2D.
Cualquier ayuda será genial.
2 respuestas 2
cosas para comprobar:
- Rigibody2D son simulados (en el inspector Rigidbody2D, la verificación simulada es verdadera)
- ninguno de los colisionadores está configurado en isTrigger
- porque esto es 2d, así que asegúrese de que ambos sprites estén en el mismo orden de capa o en orden z
- intente depurar y verifique qué objeto está golpeando la bala
(y supongo que tiene Rigidbody2D, no Rogidbody como mencionó en su pregunta)
(Si todo esto está marcado, solo para probar, intente reducir la velocidad de la bala, si la bala es demasiado rápida, intente cambiar «Detección de colisión» para continuar)
lo más importante «depurar» y depurar antes de destruir no después
La mejor práctica es usar CompareTag
en vez de:
private void OnCollisionEnter(Collision other)
if(other.gameObject.CompareTag("Ground"))
isJumping = false;
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
por hoy,espero que te halla servido