【Unity】RotateAroundとは?特定の座標を中心にして回転できるメソッド

RotateAroundとは? Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「UnityのRotateAroundってなに?」

「RotateAroundメソッドはどんなことができるの?」

というお悩みの方に向けた内容となっています。

Unityでは、オブジェクトの回転処理としてRotateAroundメソッドというものが使われることがあります。

このRotateAroundメソッドは、オブジェクトを回転させる際の中心地点を指定することで、特定の座標を中心にして回転処理を行うことができるメソッドです。

例えば、カメラの回転処理を行う際に、RotateAroundメソッドでプレイヤーの座標を中心地点にすることで、プレイヤーを中心にしてカメラを回転させるといったことができます。

そこで、このページでは、Unityで使えるRotateAroundメソッドについて、どんなメソッドなのか、また使い方までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

RotateAroundとは?中心地点を決めて回転処理を行うメソッド

RotateAroundとは、中心地点を指定してオブジェクトの回転処理を行うTransformコンポーネントで定義されているメソッドです。

通常、オブジェクトの回転によく使われるRotateメソッドは、そのオブジェクトの中心地点を使って、回転処理を行います。

しかし、このRotateAroundメソッドは、オブジェクトを回転させる際に、どの座標を中心に回転させるかを決めて処理を行うことができます。

例えば、プレイヤーのいる座標を中心にして、その周りでオブジェクトを回転させるといった動きを、RotateAroundメソッドで作ることができます。

なお、別の座標を中心地点として回転させることになるので、回転させるオブジェクト自体の座標位置も変化することになります。

RotateAroundの使い方

ここからは、RotateAroundメソッドの使い方について紹介していきます。

RotateAroundの記述方法

RotateAroundメソッドを使う際は、以下のように記述することで、オブジェクトを回転させることができます。

Transform.RotateAround(point, axis, angle);

point:回転の中心となる座標(Vector3型)
axis:回転する軸(Vector3型)
angle:回転する角度(float型)

第1引数に、どこを中心にするかVector3型で指定します。

第2引数に、回転させたい軸Vector3型で指定します。

例えば、ワールド座標のX軸に対して回転させたい場合は、Vector3(1, 0, 0)を指定すれば良いので、「Vector3.right」と記述してあげます。

同じように、Y軸であればVector3(0, 1, 0)「Vector3.up」、Z軸であればVector3(0, 0, 1)「Vector3.forward」と指定できます。

また、オブジェクトの向きによって回転軸を変えるような場合は、オブジェクトのローカル座標を使って、X軸ならTransform.right」、Y軸なら「Transform.up」、Z軸なら「Transform.forward」で指定することができます。

また第3引数には、回転させたい角度float型で指定してあげます。

RotateAroundでオブジェクトの周りを回転させる

実際にRotateAroundメソッドを使って、指定したオブジェクトの周りを回転させる処理を作ってみます。

まず、ここでは以下のようにオブジェクトを配置しておきます。

赤色の球形のオブジェクトが、キューブのオブジェクトの周りを回転させるようにしたいので、球形のオブジェクトに対して以下のスクリプトをアタッチしておきます。

using UnityEngine;

public class Test : MonoBehaviour
{
    public GameObject cube; // キューブオブジェクトを取得する変数

    void Update()
    {
        // マウスをクリックした場合
        if (Input.GetMouseButton(0))
        {
            transform.RotateAround(cube.transform.position, Vector3.forward, 1.0f);   // キューブの周りを回転させる処理
        }
    }
}

マウスをクリックしている際の処理の12行目で、RotateAroundメソッドを使って回転させる処理を行っています。

引数で、回転の中心となる座標にキューブの座標を指定、回転させる軸に画面の奥に向かうワールド座標におけるZ軸となる「Vector3.forward」を指定、回転させる角度に1度を設定しています。

これでゲームを実行してみると、

マウスをクリックすると、キューブオブジェクトの周りを回転する処理が行われているのが分かります。

さらに、このキューブオブジェクトを移動させてみると、

キューブの移動に合わせて、球体も移動しながら回転しているのが分かります。

まとめ

このページでは、Unityで使えるRotateAroundメソッドについて、どんなメソッドなのか、また使い方までをまとめていきましたが、いかがでしたでしょうか?

RotateAroundは、回転の中心となる座標と回転軸を指定して、オブジェクトの回転を行うことができるメソッドです。

特定のオブジェクトの周りを回転させるような処理を作る場合に、RotateAroundメソッドが非常に便利に使えます。

また、RotateAroundメソッドで回転させたオブジェクトは、座標の「位置」も「向き」も変化することになります。

最後までお読みいただきまして、ありがとうございました!

コメント