記事ディレクトリ
詳しい紹介
Unityでは、Transform.Rotate()
オブジェクトを回転させるために使用される関数です。これを使用して、ローカル座標系またはワールド座標系でオブジェクトを回転できます。Transform.Rotate()
詳細は次のとおりです。
関数シグネチャ:
public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
パラメータ:
eulerAngles
: 1 は回転オイラー角を表しますVector3
。これらはそれぞれ、オブジェクトの X、Y、Z 軸を中心とした回転角度です。単位は度です。xAngle
、yAngle
、zAngle
: は、それぞれ X、Y、Z 軸を中心とした回転角度を表します。単位は度です。relativeTo
: 回転がローカル座標系 ( ) に基づくSpace.Self
かワールド座標系 (Space.World
) に基づくかを指定するオプションのパラメーター。デフォルトはローカル座標系に基づいています。
使用例:
using UnityEngine;
public class RotateObject : MonoBehaviour
{
public float rotationSpeed = 60.0f;
// Update is called once per frame
void Update()
{
// 在局部坐标系下绕Y轴旋转
transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime);
// 在世界坐标系下绕X轴旋转
transform.Rotate(Vector3.right * rotationSpeed * Time.deltaTime, Space.World);
}
}
例証します:
Rotate()
関数を呼び出すと、渡された角度引数に基づいて回転が実行されます。回転は増分的です。つまり、各呼び出しでオブジェクトが特定の角度だけ回転します。- を使用して
Vector3
オイラー回転角を表すことも、X、Y、Z 軸の回転角をそれぞれ渡すこともできます。 relativeTo
パラメータは、回転がローカル座標系に基づくかワールド座標系に基づくかを指定します。デフォルトでは、ローカル座標系が使用されます。- この関数は通常、 関数などのオブジェクトの更新ループで呼び出され
Update()
、フレームごとにオブジェクトの回転を更新します。
Rotate()
回転機能を使用する場合、特にローカル座標系ではジンバル ロックの問題にも注意する必要があることに注意してください。複雑な回転操作でジンバル ロックの問題を回避する必要がある場合は、通常、クォータニオンを使用してより安定した回転を実行することをお勧めします。
デフォルトでは、ローカル座標で
Transform.Rotate()
この関数のデフォルトの動作は、ローカル座標系で回転を実行することです。2 番目の引数が明示的に指定されていない場合はrelativeTo
、デフォルトでローカル座標系を使用して回転を実行します。これは、回転が親オブジェクトから独立して、オブジェクト自体の軸に基づいて行われることを意味します。
たとえば、次のコードでは次のようになります。
transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime);
パラメータが指定されない場合relativeTo
、この回転操作はオブジェクトのローカル座標系の Y 軸を中心に実行され、オブジェクトの親オブジェクトの影響を受けません。
ワールド座標で回転を実行したい場合は、次のようにrelativeTo
引数を明示的に指定できます。Space.World
transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.World);
要約すると、Transform.Rotate()
この関数はデフォルトで回転にローカル座標系を使用しますが、relativeTo
パラメーターを設定することで回転座標系を変更できます。