ソースコード
using UnityEngine; public static class CameraUtils { /// <summary> /// ワールド座標を Screen Space - Overlay の Canvas 内のワールド座標に変換します /// </summary> /// <param name="worldCamera">ワールド座標を描画するカメラ</param> /// <param name="worldPosition">変換前のワールド座標</param> /// <returns>変換後のワールド座標</returns> public static Vector3 WorldToScreenSpaceOverlay ( Camera worldCamera, Vector3 worldPosition ) { return RectTransformUtility.WorldToScreenPoint ( cam: worldCamera, worldPoint: worldPosition ); } }
使用例
using UnityEngine; public class Example : MonoBehaviour { public Transform m_cube; public RectTransform m_text; private void Update() { m_text.position = CameraUtils.WorldToScreenSpaceOverlay ( worldCamera: Camera.main, worldPosition: m_cube.position ); } }
補足
正しく使用できない場合は、Canvas の Render Mode が
「Screen Space - Overlay」になっているかどうか確認してみてください