Version: 5.4
public void MovePosition (Vector2 position);

Parámetros

position La nueva posición para el objeto Rigidbody.

Descripción

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.

Es importante entender que un cambio en la posición real solo ocurrirá durante la próxima actualización de la física; por tanto, estar llamando a este método repetidamente sin esperar a la próxima actualización resultará en que solo sea usada la última actualización. Por esta razón, es recomendado que sea invocado durante la llamada al método FixedUpdate.

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); } }