Jump to content
UnitySpain
racso2006

ANSWERED Modificar potencia de la velocidad sin modificar la direccion

Recommended Posts

Buenas

estoy haciendo un juego, donde según donde tengas puesto la mano derecha (ya que es un juego de VR) la pelota tiene que ir en la posición opuesta (teniendo en cuenta que la pelota tiene el movimiento x congelado).

Esto es algo sencillo que ya tengo hecho con el siguiente codigo:

var PosPelota = nuevo Vector3 ( Pelota . transformación . posición . x , Pelota . transformación . posición . y , Pelota . transformación . posición . z ); // posicion pelota       
 var PosManoDer = new Vector3 ( ManoDer . transform . position . x , ManoDer . transform .          posición . y , ManoDer . transformar . posición . z ); // posicion mano derecha  

 directionDer = ( PosManoDer - PosPelota ). normalizado ; // indicar la dirección que hay entre la mano y la pelota 
 directionDer . y = directionDer . y * (- 1 ); // invertir direccion 
 directionDer . z = directionDer . z * (- 1 ); // invertir direccion Pelota . GetComponent < Cuerpo rígido > (). velocidad = direcciónDer *     
  PotenciaPelota ; // darle velocidad a la pelota en la dirección que calculamos posteriormente (de la mano a la pelota) 
               


Lo que me ocurre con este código es la dirección de la pelota venta correctamente, pero según lo lejos o lo cerca que tengas la mano de la pelota dicha pelota saldrá con más velocidad o con menos.

Mi duda es saber cómo hacerlo para mantener la dirección de la pelota igual, pero que velocidad a la venta del mar siempre la que le indico en la variable "PotenciaPelota".

No creo que sea algo extremadamente complicado, pero llevo un tiempo pensándolo y me he atascado.

Alguien me podría asesorar?

Muchas gracias de antemano.
 

Edited by racso2006
solucionado

Share this post


Link to post
Share on other sites

Claro. Necesita más velocidad para llegar a un punto más lejano.  Están actuando las físicas. Nunca me cansaré de decirlo, pero esa manera no se debe utilizar. No lo digo yo, está en manual de Unity:

https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html

Tienes que utilizar algunas de las funciones del rb e ir ajustando los factores debidos a la distancia y al resto de valores del rigibdody (mass, frinction, bla bla). Si no, es mejor no utilziar físicas.

Share this post


Link to post
Share on other sites

no terminaba de entender a lo que te referias, pero ya lo he entendido, te referias a que no modifique la velocidad sino que agrege una fuerza con addforce no?

haciendo esto se me ha solucionado el problema, muchas gracias


edit:

soy nuevo en el foro y no se bien como va.

ya esta solucionado y quiero poner el answered que veo que tienen puesto otros post solucionados pero no veo como ponerlo correctamente

 

Edited by racso2006

Share this post


Link to post
Share on other sites

Qué bien que lo hayas entendido. A veces explicando las cosas se sobre entienden otras, y no es así. Yo me conformo con un like :D

Share this post


Link to post
Share on other sites

×
×
  • Create New...