質問: ### 前提・実現したいこと 図のようにPlaneオブジェクトから見たキューブの座標を取得したいです。 キューブをPlaneの子オブジェクトにすれば、相対座標が取得できるのはわかっているのですが、 これだとPlaneの中心を原点にした座標になってしまいます。 図のようにPlaneの左上を原点にした相対的な平面座標を取得したいです。 また、可能であれば、都合上、キューブをPlaneの子オブジェクトにしたくないので、 その構造で(キューブもPlaneもヒエラルキーで独立している構造で) 取得する方法を知りたいです。 ご教示お願いします。 ### 該当のソースコード ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/042dd6ba761afd9b4bf9c6d9a1e8de3d.png) ### 試したこと キューブをPlaneの子オブジェクトにすれば、相対座標が取得できるのはわかっているのですが、 これだとPlaneの中心を原点にした座標になってしまいます。
回答: 基点にしたい位置に空のゲームオブジェクトを配置し、そのオブジェクトの位置とキューブとの相対座標を取るのが簡単だと思います。 ### 質問者コメントを受けて追記 空のゲームオブジェクトを基点とする位置に置きます。下図はシーンビューでの表示。 !イメージ説明 スクリプトは以下のような感じ。 ``` using UnityEngine; public class RelativePostion : MonoBehaviour { // インスペクターから指定する public Transform basePoint; // 基点となるゲームオブジェクトのTransform public Transform movingCube; // 動かすCube private void Update () { Debug.Log ( RelativePos () ); } // 相対座標を返す private Vector2 RelativePos () { // Cube と 基点となるオブジェクトとの相対座標 var relativePos = movingCube.position - basePoint.position; return relativePos; } } ``` 参考動画です。(※ 上記コードはUI表示に関する内容を含みません) 動画はこちら 以上です。