web-dev-qa-db-ja.com

Unity 3Dでオブジェクトを回転する

次のコードを使用すると、加速度計を使用してオブジェクトを回転できます。

transform.rotation = Quaternion.LookRotation(Input.acceleration.normalized, Vector3.up);

しかし、たとえば画面が回転しているように、オブジェクトを回転させたい-0、90、180、360度。 Unity 3Dを使用してどうすればよいですか?

6
Artur Załęski

次のようにtransform.rotationを使用できます。

transform.rotation = new Quaternion(rotx, roty, rotz, rotw);

[〜#〜]または[〜#〜]

次のようにtransform.Rotateを使用できます。

transform.Rotate(rotx, roty, rotz);

四元数のドキュメント

transform.rotationのドキュメント

加速度計入力を備えた画面の回転の例:

float accelx, accely, accelz = 0;

void Update ()
{
    accelx = Input.acceleration.x;
    accely = Input.acceleration.y;
    accelz = Input.acceleration.z;
    transform.Rotate (accelx * Time.deltaTime, accely * Time.deltaTime, accelz * Time.deltaTime);
}

オブジェクトを特定の角度に回転させる場合は、次のようにします。

float degrees = 90;
Vector3 to = new Vector3(degrees, 0, 0);

transform.eulerAngles = Vector3.Lerp(transform.rotation.eulerAngles, to, Time.deltaTime);

これにより、x軸を中心に90度回転します。

18
user5819