position | La nueva posición para el objeto Rigidbody. |
Mueve el rigidbody a la posición position
.
Mueve el rigidbody a una posición especificada position
calculando la velocidad lineal apropiada que es requerida para mover el rigidbody a esa posición durante la próxima actualización del simulador de física. Durante el movimiento, ni la gravedad ni el rozamiento lineal afectarán al cuerpo. Esto causa que el objeto se mueva rápidamente desde la posición existente, a través del mundo, hacia la position
especificada.
Debido a que esta característica permite que un rigidbody se mueva rápidamente a la position
especificada a través del mundo, cualquier collider adjunto al rigidbody reaccionará como se espera; es decir, producirá colisiones y/o disparará triggers. Esto también significa que si los colliders producen una colisión, entonces esto afectará al movimiento del rigidbody y potencialmente lo detendrá, no permitiéndole alcanzar la position
especificada durante la próxima actualización de la física. Si el rigidbody es cinemático entonces ninguna colisión afectará al rigidbody mismo, y sólo afectará a otros colliders dinámicos.
Los rigidbodies 2D tienen un límite fijado sobre cuán rápido pueden moverse; por tanto, intentar mover largas distancias en escalas de tiempo cortas puede resultar en que el rigidbody no alcance la position
especificada durante la próxima actualización de la física. Es recomendado que se utilice esto para únicamente movimientos de distancias pequeñas.
It is important to understand that the actual position change will only occur during the next
physics update therefore calling this method repeatedly without waiting for the next physics
update will result in the last call being used. For this reason, it is recommended that it
is called during the FixedUpdate callback.
Note: MovePosition is intended for use with kinematic rigidbodies.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public Vector2 velocity; public Rigidbody2D rb2D; void Start() { rb2D = GetComponent<Rigidbody2D>(); } void FixedUpdate() { rb2D.MovePosition(rb2D.position + velocity * Time.fixedDeltaTime); } }