【Unity】Transformコンポーネントの便利な関数まとめ


Transformコンポーネントの便利な関数まとめ

Transformコンポーネントは、Unityのゲーム空間内における座標を管理するコンポーネントです。

■移動

transform.Translate(float x, float y, float z, Space relativeTo)

ゲームオブジェクトを移動させます。

public class Sample1 : MonoBehaviour {

    void Update() {
        transform.Translate(0, 1, 0);               // ローカルY軸正方向に移動
        transform.Translate(0, 1, 0, Space.Self);   // ローカルY軸正方向に移動
        transform.Translate(0, 1, 0, Space.World);  // ワールドY軸正方向に移動
    }
}

■回転

transform.Rotate(float x, float y, float z, Space relativeTo)

ゲームオブジェクトを回転させます。

public class Sample2 : MonoBehaviour {

    void Update() {
        transform.Rotate(0, 1, 0);               // ローカルY軸を中心に回転
        transform.Rotate(0, 1, 0, Space.Self);   // ローカルY軸を中心に回転
        transform.Rotate(0, 1, 0, Space.World);  // ワールドY軸を中心に回転
    }
}

■公転

transform.RotateAround(Vector3 point, Vector3 axis, float angle)

ワールド座標の点(point)を中心とした軸(axis)で(angle)度回転させます。

public class Sample3 : MonoBehaviour {

    void Update() {
        // 原点を中心として、(1,1,1)方向に毎秒100度公転する
        transform.RotateAround(Vector3.zero, Vector3.one, 100 * Time.deltaTime);
    }
}

■方向

transform.LookAt(Vector3 worldPosition, Vector3 worldUp)

オブジェクトを指定した方向へ向かせます。
worldUpは上方ベクトルで、回転の向きを定める基準です。指定しない場合はワールド座標のY軸となります。

public class Sample4 : MonoBehaviour {

    // 向かせたい方向のオブジェクトのTransformを取得
    public Transform target;

    void Update() {
        // オブジェクトをtarget方向に向かせる
        transform.LookAt(target);
    }
}

■ローカル空間 → ワールド空間

transform.TransformDirection(Vector3 direction)

transform.TransformPoint(Vector3 position)

transform.TransformVector(Vector3 vector)

ローカル空間からワールド空間へ(direction / position / vector)を変換します。

public class Sample5 : MonoBehaviour {

    Rigidbody myrigid;

    void Start() {
        myrigid = GetComponent<Rigidbody>();
    }

    void Update() {
        // ローカルX軸正方向に移動
        myrigid.AddForce(transform.TransformDirection(Vector3.right));

        // ワールドX軸正方向に移動
        myrigid.AddForce(Vector3.right);
    }
}

■ワールド空間 → ローカル空間

transform.InverseTransformDirection(Vector3 direction)

transform.InverseTransformPoint(Vector3 position)

transform.InverseTransformVector(Vector3 vector)

ワールド空間からローカル空間へ(direction / position / vector)を変換します。

public class Sample6 : MonoBehaviour {

    Rigidbody myrigid;

    void Start() {
        myrigid = GetComponent<Rigidbody>();
    }

    void Update() {
        // ローカル(0.7, 0, 0.7)方向に移動
        myrigid.AddForce(transform.InverseTransformDirection(Vector3.right));

        // ワールドX軸正方向に移動
        myrigid.AddForce(Vector3.right);
    }
}

最後までお読みいただきありがとうございます。
← Unityの記事一覧にもどる

  • このエントリーをはてなブックマークに追加

PAGE TOP