Version: 2018.1
public void MoveRotation (float angle);

パラメーター

angleリジッドボディオブジェクトの新しい位置。

説明

Rigidbody オブジェクトを指定する角度(単位は度)へ回転します

リジッドボディを次の物理更新の間に angle へと回転させるのに必要な回転速度を計算することで、リジッドボディを指定した角度へと回転させます。移動中は回転抵抗も影響しません。これによりオブジェクトは既存角度から指定した angle へと速やかに回転できます。

この要素はリジッドボディを指定した angle へと素早く回転させることができるので、リジッドボディにアタッチされたどのようなコライダーも期待通りに反応します。つまり、衝突判定とトリガー判定が発生します。また、コライダーが衝突判定を発生させればリジッドボディの動作に影響し、次の物理更新の間は指定した angle に到達するのを潜在的に止めます。リジッドボディが IsKinematic に指定されている場合、すべての衝突判定はリジッドボディ自身に影響せず、他の動的なコライダーにのみ影響します。

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); } }