Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

Rigidbody2D.MovePosition

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public function MovePosition(position: Vector2): void;
public void MovePosition(Vector2 position);

Параметры

position @param position Новая позиция для твердого тела.

Описание

Передвигает твердое тело в позицию.

Передвигает твердое тело в указанную позицию путем расчета соответствующей скорости требуемой для передвижения твердого тела в эту позицию на протяжении следующего физического обновления. На протяжении движения, ни гравитация, ни линейное торможение не будет влиять на тело. Это связано с тем, что объект быстро движется из данной позиции через мир в указанную позицию.

Так как эта особенность позволяет твердому телу двигаться прямо к указанной позиции через мир, любые коллайдеры, прикрепленные к твердому телу будут реагировать как обычно, т.е. они будут обеспечивать коллизии и/или триггеры. Также это подразумевает что, если коллайдеры обеспечивают коллизии, то они будут оказывать влияние на движение твердого тела и на остановку его от достижения указанной позиции на протяжении следующего физического обновления. Если твердое тело кинематическое, то все коллизии не будут оказывать влияние на само твердое тело а только на другие динамические коллайдеры.

2D твердые тела имеют фиксированный лимит на скорость движения, поэтому попытки двигаться на большие расстояния за короткие промежутки времени могу привести к тому, что твердое тело не достигнет указанной позиции на протяжении следующего физического обновления. Рекомендуется только для перемещений на относительно короткие дистанции.

Важно понимать, что фактическое изменение позиции будет происходить только во время следующего обновления физики, поэтому неоднократный вызов этого метода без ожидания следующего физического обновления приведет к использованию последнего вызова. Поэтому вызов рекомендуется делать в функции FixedUpdate.

var velocity: Vector2;
var rb2D: Rigidbody2D;

function Start() { rb2D = GetComponent.<Rigidbody2D>(); }

function FixedUpdate () { rb2D.MovePosition(rb2D.position + velocity * Time.fixedDeltaTime); }
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); } }