Hola! llevo un par de días probando funciones pero no encuentro exactamente lo que busco o lo estoy aplicando mal, hay alguna función directa para saber la velocidad a la que cae un objeto en partículas por la gravedad? he probado con;
rigidbody.velocity.magnitude metiendo el valor en una variable vector2 ó vector3 pero no me da el valor, sólo el valor que yo hay aplicado mediante otro vector a ese objeto.
Lo que quiero es decirle que si va a más velocidad de X velocidad pues no pase de esta, y que si la velocidad es cero pues bloquear su física.
Si alguien puede ayudarme se lo agradeceré mucho. Gracias de antemano!!
Creo que no te entendi bien pero si lo que quieres es saber la velocidad de caida:
rigidbody.velocity.y
debes guardarlo en un int o double no en un Vector2 o Vector3 ya que es el componente Y de estos.
Si lo que quieres es saber el valor de la gravedad en unity:
Physics.gravity
es un Vector3 normalmente (0,k,0)
El codigo que necesitas en definitiva y si he entendido bien:
if(rigidbody.velocity.y >= MAXIMA_VELOCIDAD){
var nueva_velocidad = new Vector3(rigidbody.velocity.x,MAXIMA_VELOCIDAD,rigidbody.velocity.z);
rigidbody.velocity = nueva_velocidad;
}
El vector de velocidad de un cuerpo en unity es:
rigidbody.velocity; //De tipo Vector3
Unity usa las formulas comunes en fisica de gravedad, donde
F = m * g
F = seria la fuerza de caida.
m = masa del objeto.
g = gravedad.
pero teniendo en cuenta que esa es la forma mas simple sobre la aceleracion de un cuerpo la formula correta de aceleracion segun la ley de gravitacion universal, aceleración que sufre un cuerpo debido a la fuerza de la gravedad ejercida por otro de masa
(https://wikimedia.org/api/rest_v1/media/math/render/svg/f82cade9898ced02fdd08712e5f0c0151758a0dd) es igual a:
g = G*(M/d2) -> donde g es la aceleracion sufrida.
En unity la gravedad es = 9,81 m/s2 la cual se multiplica por la masa de tu objeto. sabiendo esto:
rigidbody.velocity.y no siempre es la velocidad real de caida ya que un cuerpo no es statico a un eje del vector y las fuerzas pueden ser proporcionales al angulo de salida.
De todas formas desde velocity podras sacar las fuerzas ejercidad en tu cuerpo sobre la gravedad global en unity.
Dios mio lo tenia delante! he probado todo menos eso x_x, no sé por qué me lié tanto, Unity se me hace bastante abstracto en comparación a como programaba, tener el ide y la manera de tratar los datos me está costando un poco. Ya lo he probado y sin problemas a la primera me dio el dato que queria!
GRACIAS A LOS DOS!!! Saludos!