以下の内容はhttps://bluebirdofoz.hatenablog.com/entry/2026/01/14/222418より取得しました。


Unityで特定のオブジェクトから見たローカル座標とワールド座標を変換する

本日はUnityの小ネタ枠です。
Unityで特定のオブジェクトから見たローカル座標とワールド座標を変換する方法です。

Transform.TransformPointとTransform.InverseTransformPoint

Transform.TransformPointとTransform.InverseTransformPointはそれぞれ特定のオブジェクトから見たローカル座標とワールド座標を変換する便利メソッドです。
Transform.TransformPointは特定オブジェクトから見たローカル座標をワールド座標に変換します。
docs.unity3d.com

Transform.InverseTransformPointは特定オブジェクトから見たローカル座標をワールド座標に変換します。
docs.unity3d.com

サンプルシーン

以下のTransform.InverseTransformPointメソッドを使って、指定オブジェクトの座標を自身のオブジェクトから見たローカル座標に変換して表示するスクリプトを作成しました。
・TransformPointTest.cs

using UnityEngine;

public class TransformPointTest : MonoBehaviour
{
    [SerializeField]
    private Transform targetTransform;

    [ContextMenu("Transform Point Test")]
    public void TransformPointTestMethod()
    {
        Vector3 revertedLocalPoint = this.transform.InverseTransformPoint(targetTransform.position);
        Debug.Log($"World Point: {targetTransform.position} => Reverted Local Point: {revertedLocalPoint}");

        Vector3 transformedBackToWorld = this.transform.TransformPoint(revertedLocalPoint);
        Debug.Log($"Reverted Local Point: {revertedLocalPoint} => Transformed Back to World: {transformedBackToWorld}");
    }
}

作成したスクリプトをY軸で180度回転したオブジェクトに設定しました。

targetTransformに座標(0,0,-2)に配置したオブジェクトの参照を設定します。

コンテキストメニューからTransformPointTestMethodを実行します。

以下の通り、180度回転したオブジェクトからは(0,0,2)のローカル座標になることがログで確認できました。
またTransformPointメソッドを使うとワールド座標に戻す計算もできることが確認できます。




以上の内容はhttps://bluebirdofoz.hatenablog.com/entry/2026/01/14/222418より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14