[클래스] 6. 트랜스폼(이론, 실습 물체이동, 플레이어텔레포트)
title: “[클래스] 6. 트랜스폼(이론, 실습- 물체이동, 플레이어텔레포트)” categories:
-
UDONGRAPHcourse
#[클래스] 6. 트랜스폼(이론, 실습: 물체이동, 플레이어텔레포트) : 네이버 블로그
디스코드 : rage147#2898
언제나 질문은 환영입니다!!
서버 놀러오셔요~~
우동 관련 이야기 해요~~
1. 먼저 트랜스폼이 뭔지 알아봅시다(이론)
오늘은 트랜스폼 강의입니다
트랜스폼에는 위치,회전,크기를 가집니다
포지션, 로테이션, 스케일이죠
유니티에서 w e r을 눌러서 수정하는 부분이 트랜스폼입니다
중요한점은 로테이션입니다.
그럼 트랜스폼 클래스에는 무엇이 있나 볼까요?
트랜스폼에 들어가면 이것저것 뜨죠?
가장 많이 쓰는것만 알아보겠습니다
GET
겟은 정보를 가져오는얘였죠?
Get transform -> Transform을 가져옵니다
Get position -> 위치를 가져옵니다
Get rotation -> 회전을 가져옵니다
Get localScale -> 크기를 가져옵니다
Get eulerAngles -> eulerAngels 각도를 가져옵니다(우리가 쓰는 x,y,z각도)
set은 하나만 보겠습니다
얘입니다
셋포지션앤로테이션입니다
무언가 위치를 설정할때는 이 기능을 쓰게됩니다
기능(funtion)입니다
Translate는 오브젝트를 이동시킵니다
Rotate는 오브젝트를 회전시킵니다
2. 물체를 이동해보자(실습)
먼저 게임오브젝트를 배열로 추가한 후 이름을 object로 해주신 후 public을 체크해주세요
Transform 안에 Translate를 꺼내주시고 연결해주세요
트랜스레이트는
인스턴스에 옮길 대상
아래 트랜스레이션은 한번에 옮길 값입니다
먼저 옮길 대상을 연결해주겠습니다
옮길 대상을 준비해주세요
드래그를 하면 새로운 창이 뜨죠?
그 창은 오브젝트가 연결 할 수 있는 창들만 나옵니다
transform을 검색하시면
get transform이 맨 아래 있죠? 눌러주세요
그 후에 object의 transform을 인스턴스에 연결해주시고
translation의 x y z는 옮기고싶은 값을 넣어주세요
저는 x로 1 옮기기 위해 x에 1을 넣었습니다
코드는 이것으로 끝입니다
인터렉트를 하면 이동시키는데
object를 x방향으로 1 이동시킵니다
천천히 코드를 파악해주세요
다음은 게임오브젝트 아무거나 object에 넣어주세요
저는 귀찮아서 저번에 썻던 거울을 넣겠습니다
그 후 플레이를 누른 후 큐브를 인터렉트하면 큐브가 이동함을 알 수 있죠?
작동이 안되면 우동그래프에서 오른쪽위 컴파일을 한번 눌러주세요
3. 플레이어를 텔레포트시켜보자(실습)
이번엔 플레이어를 텔레포트시켜보겠습니다
아까 그 그래프에서 인터렉트, object변수를 제외하고 다 지워주세요
텔레포트기능은 트랜스폼이 아닌 PlayerApi에 있습니다
playerApi안의 TeleportTo를 꺼내주세요
playerApi 안에는 플레이어와 관련된 다양한 기능들이 있습니다. 그 중 하나가 텔레포트 기능입니다
인터렉트와 텔레포트를 연결해주시고
인스턴스에서 드래그를 한 뒤 나온 검색창에
LocalPlayer를 가져와주세요
연결한 Get LocalPlayer는 인터렉트를 하는 플레이어를 의미합니다
즉 텔레포트를 한 대상은 버튼을 누른 플레이어가 됩니다
이번엔 약간 어렵습니다
TeleportTo의 두번째 입력을 보면
teleportPos죠?
Pos면 포지션을 연결해달라는 것입니다
고로 오브젝트에서 트랜스폼을 가져와 그 트랜스폼에서 포지션을 가져옵니다
그리고 그 포지션을 TeleportTo에 연결해줍니다
텔레포트 투의 맨아래 teleportRot는 회전인데 회전은 없어도 괜찮으니 0,0,0,0으로 두면 됩니다
최종 코드입니다
정리하자면
인터렉트를 누르면 텔레포트를 하는데
로컬플레이어를(버튼누른사람)을
오브젝트의 포지션으로
회전없이
텔레포트를 시킨다
라는 코드입니다
혹시 모르니깐 오른쪽위 컴파일을 한번 눌러보고 오브젝트를 연결해준 후
플레이를 누르고 인터렉트를 눌러봅시다
작동이 잘 돼죵?
이것으로 트랜스폼에 대한 강의를 마치겠습니다
디스코드 : rage147#2898
언제나 질문은 환영입니다!!
서버 놀러오셔요~~
우동 관련 이야기 해요~~
트랜스폼 Tmi.
겟포지션과 겟로컬포지션이 있는데 로컬은 부모의 위치의 상대적인 포지션입니다
유니티의 회전은 쿼터니안과 오일러각이 있습니다
오일러각은
우리가 자주 사용하는 x,y,z 의 360도 각도를 사용하는 방식입니다
하지만
함수 내에서는 x,y,z,w를 사용하는 쿼터니안을 사용합니다
둘은 완전히 다르기 때문에 오일러각을 사용하기 위해서는
euler angle을 사용합니다(오일러각)
오일러각은 0~360도 사이에 있어 사용자가 보기도 편하고 사용하기도 편하지만
계산의 속도는 쿼터니안(x,y,z,w)더 빠르기 때문에 내부 계산에서는 쿼터니안을 사용합니다
셋포지션과 셋로테이션을 사용하지않고 셋포지션앤로테이션을 사용하는 이유는
셋포지션 or 셋로테이션을 사용할때마다 트랜스폼으로 정보를 읽어옵니다
즉 셋포지션과 셋로테이션 두번 나눠서 하면 포지션에 두번 접근을 하기 때문에 속도가 느려집니다
고로 셋포지션앤로테이션을 사용해 한번에 포지션과 로테이션을 모두 설정합니다
Update이벤트 안에 트랜스레이트(이동)이나 로테이트(회전)을 넣으면
스스로 반복하기 때문에 계속 이동하거나 회전합니다