Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public void MovePosition(Vector2 position);

Параметры

position Новая позиция для объекта Rigidbody.

Описание

Перемещает твердое тело в position.

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

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

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

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

Примечание.MovePosition предназначен для использования с кинематическими твердыми телами.

// Переместить спрайт снизу слева вверх справа. Он не перестает двигаться. // Rigidbody2D указывает положение куба. 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); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3