1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[MR Dev Tips #17] Unity Transform クラスの Rotate / RotateAround メソッドを調べる

Posted at

Unity の Transform コンポーネントの Rotate メソッド と RotateAround メソッド の挙動について、実際に動かしながら、挙動を確認してみたいと思います。

まず、回転した際に分かりやすい形をしている 3Dモデル を準備します。

image.png

image.png

Transform.Rotate

実際にコンポーネントをオブジェクトにアタッチして試してみます

Example.cs
using UnityEngine;

public class Example : MonoBehaviour
{
    void Update()
    {
        transform.Rotate(0, 0.1f, 0, Space.Self);
    }
}

Animation3.gif

続いて、車のオブジェクトを X軸 を中心に 90° 回転させた状態にして、ゲームを再生してみます。

image.png

Animation4.gif

さきほどと同じく、ワールド座標のY軸側から見てみると、同じソースコードですが、違う回転をしていることが確認できます。これは Inspector 上でオブジェクトを回転させ、オブジェクトの持つローカルのY軸の向きが変わったことによる影響です。ここで、ソースコードを少し変更してみます。

transform.Rotate(0, 0.1f, 0, Space.World);

Animation5.gif

transform.Rotate() の第四引数に Space.World を指定することによって、ワールド座標軸でオブジェクトを回転させることができます。

Transform.RotateAround

Example.cs
using UnityEngine;

public class Example : MonoBehaviour
{
    // 回転の中心にしたいオブジェクトを指定
    public GameObject target;

    void Update()
    {
        // アタッチしたオブジェクトを target を中心に1秒間に 20° 回転させる
        transform.RotateAround(target.transform.position, Vector3.up, 20 * Time.deltaTime);
    }
}

実際にコンポーネントをオブジェクトにアタッチして、オブジェクト自身をターゲットに設定した場合

image.png

Animation1.gif

実際にコンポーネントをオブジェクトにアタッチして、ターゲットを他のオブジェクトに設定した場合

  • 回転の中心となるオブジェクト (Sphere) を追加

image.png

  • 回転させたいオブジェクトにアタッチした Example コンポーネントの Target に Sphere をセット

image.png

さきほどの回転の動きとは異なり、追加した Sphere を中心に回転するようになりました。

Animation2.gif

以上。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?