Unity 6.3
0 онлайн 26 гостей 3 в системе
Вход

Rigidbody2D.MoveRotation

Declaration

public void MoveRotation(float angle);

Параметры

Параметр Описание
угол Новый угол вращения для объекта Rigidbody.

Описание

Поворачивает Rigidbody в angle (в градусах).

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

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

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

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

// MoveRotation
// The sprite is set a rotation speed.

using UnityEngine; using System.Collections;

public class Example : MonoBehaviour { public Texture2D tex;

private Rigidbody2D rb2D; private Sprite mySprite; private SpriteRenderer sr; private float revSpeed = 50.0f;

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); transform.localScale = new Vector3(3.0f, 3.0f, 3.0f); rb2D.gravityScale = 0.0f; sr.sprite = mySprite; }

void FixedUpdate() { rb2D.MoveRotation(rb2D.rotation + revSpeed * Time.fixedDeltaTime); } }

Declaration

public void MoveRotation(Quaternion rotation);

Параметры

Параметр Описание
ротация Полное вращение 3D используется для извлечения только вращения по оси z.

Описание

Перегрузка MoveRotation, которая позволяет полное вращение 3D в качестве аргумента.

Вращение по оси z извлекается из заданных Quaternion rotation и используется как целевой угол для перемещения Rigidbody2D. Важно понимать, что полное вращение 3D не используется, потому что Rigidbody2D имеет только одну степень свободы вращения вокруг оси z.