En este momento estás viendo Unity: detección de colisiones 2D mediante etiquetas

 – Unity

Unity: detección de colisiones 2D mediante etiquetas – Unity

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

Deja una respuesta