title: “[클래스] 6. 트랜스폼(이론, 실습- 물체이동, 플레이어텔레포트)” categories:

  • UDONGRAPHcourse

    #[클래스] 6. 트랜스폼(이론, 실습: 물체이동, 플레이어텔레포트) : 네이버 블로그

디스코드 : rage147#2898

언제나 질문은 환영입니다!!

​

https://discord.gg/E8rF9uTggA

서버 놀러오셔요~~

우동 관련 이야기 해요~~

​

​

​

​

​

​

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

언제나 질문은 환영입니다!!

​

https://discord.gg/E8rF9uTggA

서버 놀러오셔요~~

우동 관련 이야기 해요~~

​

​

​

​

트랜스폼 Tmi.

겟포지션과 겟로컬포지션이 있는데 로컬은 부모의 위치의 상대적인 포지션입니다

​

유니티의 회전은 쿼터니안과 오일러각이 있습니다

​

오일러각은

우리가 자주 사용하는 x,y,z 의 360도 각도를 사용하는 방식입니다

​

하지만

함수 내에서는 x,y,z,w를 사용하는 쿼터니안을 사용합니다

둘은 완전히 다르기 때문에 오일러각을 사용하기 위해서는

euler angle을 사용합니다(오일러각)

오일러각은 0~360도 사이에 있어 사용자가 보기도 편하고 사용하기도 편하지만

계산의 속도는 쿼터니안(x,y,z,w)더 빠르기 때문에 내부 계산에서는 쿼터니안을 사용합니다

​

셋포지션과 셋로테이션을 사용하지않고 셋포지션앤로테이션을 사용하는 이유는

셋포지션 or 셋로테이션을 사용할때마다 트랜스폼으로 정보를 읽어옵니다

즉 셋포지션과 셋로테이션 두번 나눠서 하면 포지션에 두번 접근을 하기 때문에 속도가 느려집니다

고로 셋포지션앤로테이션을 사용해 한번에 포지션과 로테이션을 모두 설정합니다

​

Update이벤트 안에 트랜스레이트(이동)이나 로테이트(회전)을 넣으면

스스로 반복하기 때문에 계속 이동하거나 회전합니다

​

​

​

​

​

업데이트: