목표: 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);
    }
}

 

블로그 이미지

RIsN

,