01)  유니티 네트워크(Unet) 사용 전 알아야할 개념

02) 유니티 네트워크(Unet) 사용 : NetworkManager

플레이어들 사이에 위치를 네트워크 동기화를 시켜주기 위한 방법에 대해 알아보자.


NetworkTransform가 붙은 오브젝트는 


자기 자신의 위치를 자신의 네트워크 너머에 있는 리모트 플레이어에게 위치를 전달할 수 있다.


즉, 위치를 자동으로 위치를 동기화시켜주는 역할을 한다.


하지만, 다른 클라이언트에게 직접적으로 동기화를 하는 것이 아니라 호스트(방장)을 거쳐가게 된다.


NetworkTransform 컴포넌트에서는 이러한 속성들이 있다.





Transform Sync Mode에는 어떤 것을 동기화할 것인지 설정하는 것으로 다음과 같은 속성이 있다.


테스트하는 것이므로 기본값으로 해보자.


다시 창 2개를 띄우고 접속한 뒤 움직여보자.


로컬 플레이어만 움직이며, 움직이는 모습이 두 창에서 동기화된다.


그런데 여기 문제점이 하나 있다.


Player root 객체는 움직이는데 만약, 계층 구조로 되어 있다면, 이 자식 젝체들은 회전하지 않는다.


그래서, 자동차 같은 경우 바퀴와 차량 본체로 이뤄져 있다면 이동방향과 상관없이 회전하지 않는다.


따라서 이를 위해서 NetworkTransformChild을 사용해야 한다.


주의할 점은 이것을 자식 게임오브젝트에 추가하는 것이 아니라 Player(부모 게임오브젝트)에 컴포넌트로 넣는다.


PlayerCar

ㄴ wheel

ㄴ body


라면 PlayerCar에 NetworkTransformChild를 두 개 추가해준 뒤, 


Target에 wheel과 body를 드래그 & 드롭하면 된다. 이렇게 하면 두 화면 모두 동기화되어 잘 움직인다.






Posted by sungho88
,