Объявление
public void MoveRotation(float angle);Параметры
angle | The new rotation angle for the Rigidbody object. |
Описание
Поворачивает Rigidbody на angle
(указывается в градусах).
Поворачивает Rigidbody на указанный angle
, вычисляя соответствующую угловую скорость, необходимую для поворота Rigidbody на этот угол во время следующего обновления физики. Во время движения угловое сопротивление не влияет на тело. Это заставляет объект быстро перемещаться от существующего угла к указанному angle
.
Поскольку эта функция позволяет быстро поворачивать Rigidbody на указанный angle
, любые коллайдеры, прикрепленные к Rigidbody, будут реагировать ожидаемым образом, т. е. вызывать столкновения и/или срабатывания. Это также означает, что если коллайдеры произведут столкновение, это повлияет на движение твердого тела и потенциально помешает ему достичь указанного angle
во время следующего обновления физики. Если Rigidbody кинематический, то любые столкновения не повлияют на само Rigidbody, а повлияют только на любые другие динамические коллайдеры.
Компоненты Rigidbody2D имеют фиксированный предел скорости вращения, поэтому попытка поворота на большие углы за короткие промежутки времени может привести к тому, что Rigidbody не достигнет указанного класса angle
во время следующего обновления физики. Рекомендуется использовать это только для относительно небольших вращательных движений.
Важно понимать, что фактическое изменение поворота произойдет только во время следующего обновления физики, поэтому повторный вызов этого метода без ожидания следующего обновления физики приведет к использованию последнего вызова. По этой причине рекомендуется вызывать его во время обратного вызова FixedUpdate.
// ПеремещениеВращение
// Спрайту задается скорость вращения.
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);
}
}
Параметры
rotation | Полное трехмерное вращение используется для извлечения только вращения по оси Z. |
Описание
Перегрузка MoveRotation, позволяющая использовать полный трехмерный поворот в качестве аргумента.
Поворот по оси Z извлекается из заданного Quaternionrotation
и используется в качестве целевого угла для перемещения Rigidbody2D в. Важно понимать, что полное трехмерное вращение не используется, поскольку Rigidbody2D имеет только одну степень свободы вращения вокруг оси Z.