3Dのオブジェクトは Perspective なカメラ、2Dのオブジェクトは Orthographic なカメラにそれぞれ投影されている前提。
以下の手順で 3D オブジェクトの座標を 2D オブジェクトの座標に反映させる。
- 3Dオブジェクトのワールド座標から、Perspective カメラのビューポート座標を求める
- 上記ビューポート座標を Orthographic カメラのワールド座標に逆変換する
- 求めたワールド座標を 2Dオブジェクトの transform.position に設定する
コード例
sample.cs
GameObject obj3d; // 3Dオブジェクト
GameObject obj2d; // 2Dオブジェクト
Camera perspCamera; // 3Dオブジェクトを写すカメラ
Camera orthoCamera; // 2Dオブジェクトを写すカメラ
// 3Dオブジェクトのワールド座標から、Perspective カメラのビューポート座標を求める
var viewPortPos = perspCamera.WorldToViewPortPoint(obj3d.transform.position);
// 上記ビューポート座標を Orthographic カメラのワールド座標に逆変換する
var worldPos2d = orthoCamera.ViewportToWorldPoint(viewPortPos);
// 2Dオブジェクトの座標を移動
obj2d.transform.position = worldPos2d;