angle | 刚体对象的新旋转角度。 |
将刚体旋转到 /angle/(以度为单位)。
通过计算在下一次物理更新期间将刚体旋转到指定 angle
所需的适当角速度来将刚体旋转到该角度。在移动过程中,角阻力不会影响刚体。这使得对象能够快速从现有角度移动到指定的 /angle/。
由于该功能允许刚体快速旋转到指定的 /angle/,因此附加到刚体的任何碰撞体都将按预期作出反应,也就是说,它们将产生碰撞和/或触发。这也意味着如果碰撞体产生碰撞,则将影响到刚体的运动,并可能阻止刚体在下一次物理更新期间到达指定的 /angle/。如果是运动刚体,则任何碰撞都不影响刚体本身,只会影响任何其他动态碰撞体。
2D 刚体对其旋转速度有固定限制,因此在短时间内尝试旋转较大的角度会导致刚体无法在下一次物理更新期间到达指定 /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); } }