版本:Unity 6 (6000.0)
语言English
  • C#

Rigidbody2D.MoveRotation

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public void MoveRotation(float angle);

参数

angle 刚体对象的新的旋转角度。

描述

将刚体旋转到angle(以度为单位)。

通过计算在下一个物理更新期间将刚体旋转到该角度所需的适当角速度,将刚体旋转到指定的angle。在移动过程中,angularDamping不会影响刚体。这会导致物体从现有角度快速移动到指定的angle

由于此功能允许刚体快速旋转到指定的angle,因此附加到刚体的任何碰撞体将按预期反应,即它们将产生碰撞和/或触发器。这也意味着,如果碰撞体产生碰撞,则它将影响刚体运动,并可能阻止它在下一个物理更新期间到达指定的angle。如果刚体是运动学刚体,则任何碰撞都不会影响刚体本身,只会影响任何其他动态碰撞体。

Rigidbody2D组件对旋转速度有固定的限制,因此尝试在短时间内旋转大角度可能会导致刚体在下一个物理更新期间无法达到指定的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); } }

声明

public void MoveRotation(Quaternion rotation);

参数

rotation 用于仅提取z轴旋转的完整3D旋转。

描述

MoveRotation的一个重载,允许使用完整的3D旋转作为参数。

从给定的Quaternion rotation中提取z轴旋转,并将其用作将Rigidbody2D移动到的目标角度。务必了解,不会使用完整的3D旋转,因为Rigidbody2D仅围绕z轴具有一个自由度。