public void MovePosition (Vector2 position);

Parámetros

positionLa 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.

// 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); } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961