Unity Spain

Mesa de ayuda => Unity3D => Otros => Mensaje iniciado por: Alvaro95 en Enero 08, 2019, 09:56:41 PM

Título: Detener un rigid body de manera natural
Publicado por: Alvaro95 en Enero 08, 2019, 09:56:41 PM
Buenas a todos!
 
 
 
¿Existe alguna manera de que un rigid body se detenga de manera suave?
 
En mi caso tengo un rigid body que se mueve rotando, quiero que al pulsar una tecla se detenga completamente pero lentamente como si fuera un freno vamos.
Título: Detener un rigid body de manera natural
Publicado por: juanma_teso en Enero 08, 2019, 11:04:30 PM
Puedes modificar el drag del rigidbody, a mayor drag más oposición tiene a moverse, para la rotación creo que está el angulardrag, es decir si fijas un angulardrag "grande" se detendrá de forma lineal rápidamente, uno "pequeño" tardará más.
Título: Detener un rigid body de manera natural
Publicado por: pioj en Enero 09, 2019, 02:32:19 PM
Un truco po***rmente conocido es usar la inercia con los valores de gravedad, se le llama también "dampening":
 



   
      velocidad *= 0.98f;
   

[/quote]
 
y poco a poco va decelerando hasta llegar a cero.
Título: Detener un rigid body de manera natural
Publicado por: Alvaro95 en Enero 09, 2019, 09:31:21 PM
Pero como seria el script?
 
 
 
Ah lo del drag y angular drag no me vale, me jode la fisica.
Título: Detener un rigid body de manera natural
Publicado por: leocub58 en Enero 10, 2019, 01:52:45 AM
Pues hazlo con la magnitud del vector velocidad del rigidbody. 

 
 

if(condicion){
rigidbody.velocity = Vector3.ClampMagnitude(rigidbody.velocity, Mathf.Lerp(rigidbody.velocity.magnitude, 0f, time.deltaTime));
}

 
No sé si está bien lo acabo de hacer sobre la marcha pero sería algo de ese estilo. Busca info.