Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

La lógica tras las físicas.

Iniciado por Quel, Febrero 25, 2015, 10:02:48 AM

Tema anterior - Siguiente tema
Buenos días.
 
Os cuento. Me encuentro con un problema que supongo viene provocado por no entender como funcionan realmente las físicas. Ya que la manera que yo creía "lógica" no es la que parece ser real. Para el siguiente experimento tengo la siguiente escena.
 
- Una pelota con un collider, rigidbody y gravedad. Que cae hacia "abajo". Esta pelota se encuentra 10 unidades por encima de 0.
- Un suelo a nivel 0, formado por un collider.
- Entre ambos hay un "Bounciness" de 1. Es decir, si le doy a play, la pelota cae, rebota y sube de nuevo hasta una altura de 10. Así de manera indefinida.
 
Pero aquí acaba todo lo "normal".
Si yo ahora hago un script en que, cuando la pelota golpea el suelo, su velocidad se divide por 2, cabría pensar que ahora solo llegará hasta media altura. Pues no. La pelotita rebota hasta una altura de 3(aprox.).
Si repito el mismo experimento pero ahora opto por multiplicar la velocidad de la pelota por 2, esta no sube hasta 20 unidades. Sino que lo hace por encima de las 35.
 
Asi que esta claro que como yo tenia convencida la velocidad no es como se calculan realmente en Unity. ¿ Alguien entiende y podría arrojar un poco de luz al tema ?
 
¿ Como podría saber que fuerza de "rebote" tiene que tener la pelota para que que llegue a 5 puntos de altura, a 20 o al valor que yo quiera ?.
 
Gracias de antemano.

Febrero 25, 2015, 05:37:37 PM #1 Ultima modificación: Febrero 25, 2015, 05:39:29 PM por kingtrase
creo, que el error proviene que usas un sistema en relatividad, mírate esto a ver si te sirve:
http://docs.unity3d.com/Manual/class-Rigidbody.html" rel="external nofollow">http://docs.unity3d.com/Manual/class-Rigidbody.html
http://docs.unity3d.com/ScriptReference/Rigidbody.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/Rigidbody.html
http://docs.unity3d.com/ScriptReference/Collider.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/Collider.html
 
(no hay perdida, es de la pagina oficial de unity)
piensa que lo que estas cambiando al hacer tus pruebas, cuando divides la velocidad o multiplicas, esta sigue actuando con la misma masa que posea ese rigidbody, si ademas reduces la masa o aumentas (incluso sin cambiar la velocidad) puede que funcione, solo deberás hacer pruebas.
 
suerte!!
 
Edit:
tambien te añado : http://es.wikipedia.org/wiki/F%C3%ADsica" rel="external nofollow">http://es.wikipedia.org/wiki/F%C3%ADsica
te ayudara a comprender algo mejor la fisica.

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE(▄▀)_๑۩۞۩๑ 



Nose , a voz de pronto y sin pensarlo mucho (Puede que me este colando) es que digamos que las ecuaciones de gravedad o de movimientos accelerados no tienen forma de recta, sin ir mas lejos y llendo a la fisica de bachillerato(Que nostalgia) la distanciaS = VelocidadInicial * tiempo + (Acceleracion(Tu caso 9,8)  * Tiempo ^ 2) / 2Como puedes ver facilmente no es una recta (y != mx) por lo que aunque multipliques por 2 la velocidad la S no va a ser el doble, nose si me explico y si estoy en lo correcto,pero probablemente ese es el motivo de que obtengas esos valores,Un  saludo

Visita http://www.programacionwh.com encontraras tutoriales y muchas cosas .


Tambien puedes visitar mi canal de YouTube https://www.youtube.com/channel/UClSCTn0wPN1iFjED0yaoJUA



Cuando dices que la velocidad la divides por 2, es por un impulso (AddForce)?

Etiquetas: