Tips

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

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

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


Transformコンポーネントは、Unityのゲーム空間内における座標を管理するコンポーネントです。
その中からよく使う便利な関数をまとめておきます。
[Unity_317×90]

■移動


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ゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search