Jump to content
Sreaver

OnCollisionEnter no funciona correctamente

Recommended Posts

Buenas noches,

estoy practicando con el típico juego "rebotes" a lo arkanoid. Tengo unos materiales físicos aplicados a la barra y la pelota para que rebote y no pierda velocidad. Sin fricción. 

Los bloques tienen marcado "is kinetic", con el material también para que rebote. Estoy utilizando un OnCollisionEnter que funciona bien cuando la pelota golpea se elimina el objeto, pero algunas veces cuando la pelota golpea en determinadas zonas a el lateral del ladrillo hay veces que se destruye pero no rebota, es decir la pelota sigue en la misma trayectoria. He puesto la colisión en dinámica, pero esta no parece ser la solución. ¿Alguna idea?

Gracias

Share this post


Link to post
Share on other sites

prueba con un delay a la hora de destruir el bloque. El método Destroy tiene como parámetro opcional un tiempo de espera.

Destroy(GameObject, Delay);

en tu caso sería 

Destroy(bloque, 0.5f);

 

 

 

Share this post


Link to post
Share on other sites

Buenas. Hace lo mismo, aunque me ha venido bien para otro efecto que quiero aplicar. 

Por lo que veo cuando roza por la orilla el bloque lo destruye y no se desvía la trayectoria de la bola. 

Me tiene loco el tema. He probado cambiando el tamaño del box collider en los bloques, pero nada. 

Share this post


Link to post
Share on other sites
19 hours ago, Sreaver said:

Los bloques tienen marcado "is kinetic"

😂 Me rio porque tenía un asset llamado Kinematic 2D y el 90% de los usuarios me decian "Muy bueno el kinetic" ajjaja.

19 hours ago, Sreaver said:

¿Alguna idea?

La pelota debería rebotar bien ya que OnCollisionEnter/Exit/Stay ocurren luego de la simulación, es decir que las velocidades ya fueron calculadas (el rebote en este caso). Es decir que el bloque se elimina de manera segura con Destroy.

19 hours ago, Sreaver said:

pero algunas veces cuando la pelota golpea en determinadas zonas a el lateral del ladrillo hay veces que se destruye pero no rebota,

Quizás el problema no sea de OnCollisionEnter (bueno, no lo es ya que lo mencionas en el post), puede ser que las físicas estén haciendo su trabajo bien. ¿Estás seguro que tu collider es rectangular? La esfera al colisionar te devuelve una normal "interpolada" (no se si es el término correcto):

PFD7kmQ.jpg

Pobrá con reemplazar el collider de la bola de un circulo (asumo que estás usando esto) por una caja. Recorda freezar la rotación Z (en Rigidbody).

 

Saludos

 

Edited by lightbug

Share this post


Link to post
Share on other sites

Jajaja. Es que me estoy familiarizando con las palabras todavía....

El eje z si esta congelado. Ya me pasaba que se iba la bola a tomar viento 😂.

Mañana revisaré todo y probaré a cambiar la forma del collider. No pensaba atascarme en estas cosillas, la verdad está resultando el aprendizaje más complicado de lo que parecía. 

Gracias 

Share this post


Link to post
Share on other sites

×
×
  • Create New...