Jump to content
UnitySpain
Sign in to follow this  
Jardem

ANSWERED Tornado de Arena

Recommended Posts

Buenas, para un juego quiero hacer un escenario que sea un desierto, y he pensado en meter tornados de arena, lo he hecho mediante partículas. Os dejo aquí un vídeo.

https://imgur.com/v4h9HaZ

Me gustaría hacer un script para que si por ejemplo una bola entra en el tornado se vaya volando(también puedo crear una animación con el player y que de vueltas por el tornado hasta salir volando), la cuestión es que no tengo ni idea de cómo hacerlo, si alguien sabe alguna forma se lo agradecería mucho.

Gracias de antemano!

 

 

 

Share this post


Link to post
Share on other sites

Hola Jardem.

No tengo ningún script así a mano, pero sin duda veo seguro la necesidad de programar un poco para que ese efecto ocurra. La idea que me viene a la cabeza es la siguiente:

- Creas un trigger, un cubo o un cilindro y lo pones donde esté el tornado. Este objeto le creas un script, para que cuando la bola entre ahí, pues empiece el efecto.

- En el script, al ser un trigger, puedes usar las funciones de trigger en vez de la Start y Update de siempre.
Las funciones de trigger que me refiero son las siguientes:


OnTriggerEnter: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html  (Se dispara cuando el collider de la bola entra en el trigger)

OnTriggerExit: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerExit.html (Se dispara cuando el collider de la bola sale del trigger)

OnTriggerStay: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerStay.html (Se dispara en cada frame mientras el collider de la bola esté dentro del trigger)

Depende de como sea el script de control de la bola, puede que tengas que hacer contrarrestar más cosas o menos, pero con esas funciones deberías poder tener algo más de control.

 

- Si por ejemplo, el controlador de la bola es el rigidbody estándar de Unity, pues podrías hacer que en el OnTriggerStay, la bola recibiera una fuerza que la mueva. (El vector de dirección de la fuerza, podría variar con el tiempo, quizás la Y sea siempre hacia arriba, pero la X,Z podría estar cambiando dependiendo del ángulo para que la bola vaya recorriendo un círculos mientras está dentro del tornado , las fórmulas trigonométricas creo que serían las siguientes:

Dado el ángulo "A"
y el radio "r"

X = cos (A) * r
Z = seno(A) * r

La función para mover la bola debería ser AddForce en el OnTriggerStay, aunque no recuerdo qué modalidad habría que ponerle en el "ForceMode" (A penas uso el Rigidbody :(   )

https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

https://docs.unity3d.com/ScriptReference/ForceMode.html  (Yo creo que "Force" debería valer, pero prueba con los 4 por si acaso).

 

Share this post


Link to post
Share on other sites
On 11/2/2019 at 3:00 AM, Antonio said:

Hola Jardem.

No tengo ningún script así a mano, pero sin duda veo seguro la necesidad de programar un poco para que ese efecto ocurra. La idea que me viene a la cabeza es la siguiente:

- Creas un trigger, un cubo o un cilindro y lo pones donde esté el tornado. Este objeto le creas un script, para que cuando la bola entre ahí, pues empiece el efecto.

- En el script, al ser un trigger, puedes usar las funciones de trigger en vez de la Start y Update de siempre.
Las funciones de trigger que me refiero son las siguientes:


OnTriggerEnter: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html  (Se dispara cuando el collider de la bola entra en el trigger)

OnTriggerExit: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerExit.html (Se dispara cuando el collider de la bola sale del trigger)

OnTriggerStay: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerStay.html (Se dispara en cada frame mientras el collider de la bola esté dentro del trigger)

Depende de como sea el script de control de la bola, puede que tengas que hacer contrarrestar más cosas o menos, pero con esas funciones deberías poder tener algo más de control.

 

- Si por ejemplo, el controlador de la bola es el rigidbody estándar de Unity, pues podrías hacer que en el OnTriggerStay, la bola recibiera una fuerza que la mueva. (El vector de dirección de la fuerza, podría variar con el tiempo, quizás la Y sea siempre hacia arriba, pero la X,Z podría estar cambiando dependiendo del ángulo para que la bola vaya recorriendo un círculos mientras está dentro del tornado , las fórmulas trigonométricas creo que serían las siguientes:


Dado el ángulo "A"
y el radio "r"

X = cos (A) * r
Z = seno(A) * r

La función para mover la bola debería ser AddForce en el OnTriggerStay, aunque no recuerdo qué modalidad habría que ponerle en el "ForceMode" (A penas uso el Rigidbody :(   )

https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

https://docs.unity3d.com/ScriptReference/ForceMode.html  (Yo creo que "Force" debería valer, pero prueba con los 4 por si acaso).

 

Se me olvidaba, ¡muchas gracias! Al final he utilizado varias diferentes(Impulse, Force y VelocityChange si no recuerdo mal), le he dado una fuerza en Y en el Enter, diferentes fuerzas, vectores y rotaciones en los 3 ejes para simular un movimiento en el Stay y otra fuerza con un vector y rotaciones aleatorias para expulsarlo en el Exit.

Share this post


Link to post
Share on other sites
13 hours ago, Jardem said:

Se me olvidaba, ¡muchas gracias! Al final he utilizado varias diferentes(Impulse, Force y VelocityChange si no recuerdo mal), le he dado una fuerza en Y en el Enter, diferentes fuerzas, vectores y rotaciones en los 3 ejes para simular un movimiento en el Stay y otra fuerza con un vector y rotaciones aleatorias para expulsarlo en el Exit.

Eso suena incluso mejor Jardem. me alegro que te haya salido el efecto.

Share this post


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

×
×
  • Create New...