목표: 3D 카메라로 바라보는 3D 오브젝트의 위치에 UI 카메라 상의 캔버스에 이미지를 표시
>> 사용 이유: 내가 선호하는 구조가 3D 카메라와 UI카메라의 복합적인 구조
using System;
using UnityEngine;
public static class ToolCamera
{
public static Vector3 ConvertPosition3DTo2DLocal(this Camera _camera3D,
Camera _camera2D, Canvas _canvas, Vector3 _position3D)
{
// :: 3D 카메라에서의 3D 위치를 3D 카메라에서의 2D 위치로 변경
Vector3 position2Din3D = _camera3D.WorldToScreenPoint(_position3D);
// :: 3D 카메라에서의 2D 위치를 UI(2D) 카메라에서의 2D 로컬 위치로 변경
Vector2 result;
RectTransformUtility.ScreenPointToLocalPointInRectangle(
_canvas.transform as RectTransform, position2Din3D, _camera2D, out result);
// :: Z축은 0으로 고정
return new Vector3(result.x, result.y, 0);
}
}