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이벤트 안에 트랜스레이트(이동)이나 로테이트(회전)을 넣으면

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

업데이트: