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.
// Move sprite bottom left to upper right. It does not stop moving. // The Rigidbody2D gives the position for the cube.
using UnityEngine; using System.Collections;
public class Example : MonoBehaviour { public Texture2D tex;
private Vector2 velocity; private Rigidbody2D rb2D; private Sprite mySprite; private SpriteRenderer sr;
void Awake() { sr = gameObject.AddComponent<SpriteRenderer>(); rb2D = gameObject.AddComponent<Rigidbody2D>(); }
void Start() { mySprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f); velocity = new Vector2(1.75f, 1.1f); sr.color = new Color(0.9f, 0.9f, 0.0f, 1.0f);
transform.position = new Vector3(-2.0f, -2.0f, 0.0f); sr.sprite = mySprite; }
void FixedUpdate() { rb2D.MovePosition(rb2D.position + velocity * Time.fixedDeltaTime); } }