카메라를 선택 후: Ctrl + Shift + F

블로그 이미지

RIsN

,

목표: 게임의 레시피 UI가 카메라를 계속 바라볼 필요가 있음

  • 주의
    • 빈 게임 오브젝트를 만들고 거기에 스크립트를 부착할 필요가 있음.
    • 내부의 이미지나 글은 조금 각도 등이 수정이 가능한 형태로 만들어야 나중에 편해짐

예) 방식

using System.Collections;
using UnityEngine;

public class GearTool_LookAtCamera : _Gear
{
    public override void Init() { }

    // :: 따라갈 카메라 혹은 오브젝트
    [SerializeField] private Transform iCamera = null;

    // :: 쳐다보기
    void Update()
    {
        if (this.iCamera == null) this.iCamera = Camera.main.transform;

        this.transform.LookAt(
            this.transform.position + this.iCamera.rotation * Vector3.forward,
            this.iCamera.rotation * Vector3.up);
    }
}
  • _Gear는 현재 쓰고 있는 형식, MonoBehaviour로 사용하거나, 상황에 맞춰서 사용할 것
블로그 이미지

RIsN

,

목표: 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

,