https://kmong.com/self-marketing/556080/xcCLzhi3mY
당신이 손해볼 구글링 시간을 없애다 - 유니티 비법서 - 크몽
UniCoti 전문가의 전자책 서비스를 만나보세요. <p>이 책은 유니티를 하면서 생기는 여러 오류에 대한 해결책과</p>...
kmong.com
(174가지 주제의 유니티 기능 정리, 오류 해결법 + 무제한 질문권 전자책. 15000원)
간단한 반응속도 테스트기를 만들려고 하다가
랜덤 한 위치에 소환하되, 화면 안쪽에서 소환되게 하려는
의도가 있어서, 화면 끝좌표를 가져오는 법을 소개해 보겠다.
먼저, 개념들을 알려주겠다.
1. Screen.width
이 메서드는 현재 화면의 가로길이를 가져와준다.
또한 화면이 어떻게 달라지든 그에 맞게 가져오기 때문에
타깃 기기가 태블릿이든 휴대폰이든 문제없이 사용가능하다.
2. Screen.height
이 메서드도 비슷하게 화면의 세로길이를 가져와 준다.
이 메서드 또한 마찬가지로 화면 비율에 따라 가져와주기 때문에
태블릿이든 휴대폰이든 무슨 기기든 상관없이 사용가능하다.
3. Camera.main.ScreenToWorldPoint()
카메라의 좌표는 픽셀로 구성되어 있어서,
마우스의 좌표를 가져오기, 화면 끝을 가져오기를 하는 경우엔,
x좌표의 픽셀 하나, y좌표의 픽셀 하나를 가져오기 때문에
유니티의 좌표계와 다르다. 그걸 변환해 주는 메서드가
ScreenToWorldPoint()이다.
Vector2 Right = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, Screen.height*0.5f));
Vector2 Left = -Right;
Vector2 Top = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width*0.5f, Screen.height));
Vector2 Bottom = -Top;
Right는 화면의 가로크기를 넣어서, 가로의 끝을 타깃 하고,
세로 크기의 반, 즉 가운데 또 한 번 말하자면 월드좌표계기준 0을 넣어주었다.
Left는 그 반대이고, y좌표는 어차피 0이라 -0 = 0이기 때문에
-Right로 넣어주었다.
같은 이유로 Top과 Bottom도 만들 수 있다.
여기까지 화면 끝을 다뤄봤는데,
랜덤 물체의 크기가 있는 경우에는 크기의 반만큼 벡터에서 빼줘야
물체가 잘리지 않는다.
이상으로 도움이 되었길 바라며,
끝.
'게임 개발 > 유니티C#' 카테고리의 다른 글
유니티 C#) 휴대폰에서 작은 메시지, 경고 만들기(토스트 메시지) (0) | 2023.03.04 |
---|---|
유니티) 닿았을때, 닿아있을때, 떨어졌을때 실행하기. (OnCollision) (0) | 2023.02.17 |
유니티) 애니메이션 만들기 (2편) (0) | 2023.01.26 |
유니티 C#) 선택된 UI 가져오는 법. (EventSystem.current.currentSelectedGameObject) (0) | 2023.01.25 |
유니티 C#) 랜덤한 값 생성하기. (0) | 2023.01.24 |
댓글