Version: 2017.1
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.

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