Jump to content
UnitySpain
Sign in to follow this  
Ben

Calcular impacto realista

Recommended Posts

Estoy intentando hacer una seria de experimentos en RV y nada mas empezar me encuentro con un problema de físicas "sencillo" que no encuentro como resolver.
Tengo en un controlador un rectangulo con el que quiero golpear una esfera, al hacerlo esta no reacciona como tendría aunque los 2 objetos tienen las físicas en el modo mas preciso, y tienen un material con bounce=1.
Me he dado cuenta que si golpeo la pelota desde abajo esta "bota" lo que tendría que botar en el mismo momento de la colisión, pero al no aplicarse la aceleración del objeto que "la empuja" no se suma a la fuerza del bounce de la física y por eso reacciona mal, aquí doy por sentado que solo tendría que agregar a la velocity de la pelota, la del objeto que la impacta.
Pero quiero ir un poco mas allá y es aquí donde tengo el gran problema:
Si quiero aplicar un efecto completamente realista, me encuentro que no se como aplicar una fuerza de impacto basándose, no solo en el velocity del objeto que empuja, si no en el rigidbody del mismo, pongo un ejemplo:
Si golpeo una esfera perfecta con una pala en vertical, la espera sera empujada en completo horizontal, en cambio si pongo la pala a 45º, y muevo la pala en perfecto horizontal, la bola saldrá en esta dirección, y esto es incorrect, la bola tendría también que elevarse al recibir un impacto de forma inclinada.
Otro ejemplo seria si en vez de una bola esférica usas un cuadrado, si le impactas en el centro, saldrá en un horizontal perfecto, pero si se golpea cerca de una esquina, el cuadrado ademas de salir en horizontal, tendría que ir hacia abajo y también agregarse una pequeña fuerza de rotación.

¿Cuales son las formulas para aplicar esta física de impacto realista? 
¿Unity tiene alguna función que me permita aplicar un impacto indicando el punto exacto de 2 rigidbodys + la velocity para que las físicas calculen esto de forma realista?

Gracias.
 

Share this post


Link to post
Share on other sites

Función no hay, pero si no se soluciona con los materiales físicos siempre puedes intentar hacer un truco: lanza un raycast antes de que el cuadrado pegue a la bola, quítales las físicas y cuando colisiones, como el raycast te da información de donde, con que fuerza y demás, usa eso para aplicar un AddForce en la dirección indicada. Se me está ocurriendo sobre la marcha, pero igual te sirve. Yo he hice un pimball hace algún tiempo y aún recuerdo lo que sufrí con las físicas, no es de lo mejot que tiene Unity y cuidado con las escala que con cosas muy grandes se llevan fatal

Share this post


Link to post
Share on other sites
On 1/14/2019 at 10:30 AM, Ben said:

Estoy intentando hacer una seria de experimentos en RV y nada mas empezar me encuentro con un problema de físicas "sencillo" que no encuentro como resolver.
Tengo en un controlador un rectangulo con el que quiero golpear una esfera, al hacerlo esta no reacciona como tendría aunque los 2 objetos tienen las físicas en el modo mas preciso, y tienen un material con bounce=1.
Me he dado cuenta que si golpeo la pelota desde abajo esta "bota" lo que tendría que botar en el mismo momento de la colisión, pero al no aplicarse la aceleración del objeto que "la empuja" no se suma a la fuerza del bounce de la física y por eso reacciona mal, aquí doy por sentado que solo tendría que agregar a la velocity de la pelota, la del objeto que la impacta.
Pero quiero ir un poco mas allá y es aquí donde tengo el gran problema:
Si quiero aplicar un efecto completamente realista, me encuentro que no se como aplicar una fuerza de impacto basándose, no solo en el velocity del objeto que empuja, si no en el rigidbody del mismo, pongo un ejemplo:
Si golpeo una esfera perfecta con una pala en vertical, la espera sera empujada en completo horizontal, en cambio si pongo la pala a 45º, y muevo la pala en perfecto horizontal, la bola saldrá en esta dirección, y esto es incorrect, la bola tendría también que elevarse al recibir un impacto de forma inclinada.
Otro ejemplo seria si en vez de una bola esférica usas un cuadrado, si le impactas en el centro, saldrá en un horizontal perfecto, pero si se golpea cerca de una esquina, el cuadrado ademas de salir en horizontal, tendría que ir hacia abajo y también agregarse una pequeña fuerza de rotación.

¿Cuales son las formulas para aplicar esta física de impacto realista? 
¿Unity tiene alguna función que me permita aplicar un impacto indicando el punto exacto de 2 rigidbodys + la velocity para que las físicas calculen esto de forma realista?

Gracias.
 

No termino de entender  ... los choques en unity son bastante realistas y y tienen en cuenta el punto de impacto...

No obstante en la dinámica de choques importa mucho el material y desde luego las velocidades y las masas. Cuándo dos cuerpos chocan  el pequeño (menor masa) siempre rebota en mayor o menor medida independientemente de que no lo haga exactamente volviendo por la trayectoria de entrada.

Edited by CoulomBulls

Share this post


Link to post
Share on other sites
On 1/14/2019 at 6:30 AM, Ben said:

Si golpeo una esfera perfecta con una pala en vertical, la espera sera empujada en completo horizontal, en cambio si pongo la pala a 45º, y muevo la pala en perfecto horizontal, la bola saldrá en esta dirección, y esto es incorrect, la bola tendría también que elevarse al recibir un impacto de forma inclinada.

y que método estás usando para hacer eso que decís??  me imagino que no será seleccionando el objeto en la misma escena y moviendolo ...

On 1/14/2019 at 6:30 AM, Ben said:

¿Cuales son las formulas para aplicar esta física de impacto realista? 
¿Unity tiene alguna función que me permita aplicar un impacto indicando el punto exacto de 2 rigidbodys + la velocity para que las físicas calculen esto de forma realista?

La joda de los rigidbodies dinámicos es que es todo realista así como están por defecto, ponele que además metiendo materiales y tocando peso, drag, angular drag y demás parametros del rigidbody. Tenés un método que le podes adicionar fuerza a un punto, aunque no recuerdo su nombre ahora mismo.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...