[Unity] UI 크기를 WorldSpace 기준으로 바꾸기

2022. 2. 25. 16:00·etc/Unity

* 2D Project라고 가정

 

유저가 폭격 스킬을 사용한다고 해보자

그러면 유저에게 폭격 지점과 범위를 정하는 UI를 제공하게 될 것인데

폭격 범위를 정하는 Circle모양의 UI와, 실제 폭격효과를 보여주는 Circle모양의 GameObject 간의

크기가 동일해야 합리적인 UI가 될 것이다

 

이때 폭격 효과를 보여주는 Circle은 GameObject의 Sprite이어서 WorldSpace에 존재하고

폭격 범위를 정하는 Circle은 UI의 Image여서 ScreenSpace에 존재하는데 이 둘의 크기를 어떻게 같게 할 수 있을까?

 

먼저 ScreenSpace는 카메라에 의해서 결정된다는것을 알아야 한다.

현재 프로젝트의 해상도가 1920x1080이라고 가정해보자.

Debug.Log(Screen.Height); // 1080
Debug.Log(Screen.Width); // 1920

좌하단이 (0, 0)에 대응되고 우상단이 (1920, 1080)에 대응되는 ScreenSpace가 존재하는데

만약 Height나 Width 둘 중 하나에 대응되는 WorldSpace의 Unit의 크기를 알게 된다면 

제목에 적혀있는 문제는 바로 해결된다.

 

이 크기는 Main Camera의 Inspector에 있는 Size를 보면 알 수 있다.

요놈은 Screen.Height / 2 만큼의 ScreenSpace의 길이가 WorldSpace에서는 몇 Unit으로 계산되는지를 나타낸다.

만약 Size가 1이라면 우리의 Height 값인 1080의 절반인 540이 1 Unit의 길이를 갖는다는 것이다.

즉, 

float unitInScreenSpace = Screen.height / (Camera.main.orthographicSize * 2);
// WorldSpace의 1 Unit에 해당되는 ScreenSpace의 길이

 

해결! 

저작자표시 (새창열림)

'etc > Unity' 카테고리의 다른 글

[Unity] 코루틴 일시정지시에 시점 복구하기  (0) 2022.02.24
[Unity] VS에서 Unity 메세지 띄우는 법  (0) 2021.07.12
[Unity] 코루틴, Coroutine이란?  (0) 2021.07.12
'etc/Unity' 카테고리의 다른 글
  • [Unity] 코루틴 일시정지시에 시점 복구하기
  • [Unity] VS에서 Unity 메세지 띄우는 법
  • [Unity] 코루틴, Coroutine이란?
imsongkk
imsongkk
이것저것 적어보는 개발 블로그
  • imsongkk
    이것저것
    imsongkk
  • 전체
    오늘
    어제
    • 분류 전체보기 (81)
      • 일상 (1)
      • Infra (21)
        • AWS (3)
        • Docker (8)
        • Kubernetes (9)
        • Terraform (1)
      • Trouble Shooting (9)
      • Back-End (18)
        • Spring Boot (2)
        • JPA (7)
        • HTTP 기본 (4)
        • DDD (3)
      • 소마 (4)
      • Programming (7)
        • 디자인 패턴 (7)
      • etc (19)
        • Unity (4)
        • Node.js (2)
        • React (1)
        • 리액트를 다루는 기술 (2)
        • C# (6)
        • Language (0)
        • Firebase (2)
        • 알고리즘 (1)
        • CS (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Push
    firestore
    포트
    VPC #Subnet #NAT #Region #AZ #IGW
    React
    Repository
    도메인
    3000
    Git
    Pull
    Google Analytics
    Firebase
    Terraform #테라폼 #IaC #AWS CLI
    EC2
    Private
    clone
    소프트웨어 마에스트로 #소마 #SWM #소프트웨어 마에스트로 14기
    8080
    Firebase Analytics
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
imsongkk
[Unity] UI 크기를 WorldSpace 기준으로 바꾸기
상단으로

티스토리툴바