유니티 UNet 멀티플레이어 게임 개발하기 E04 - 로컬과 리모트 동작 분리하기
HTML-код
- Опубликовано: 6 фев 2025
- 유니티 내장 솔루션인 UNet 을 사용하여 간단한 멀티플레이어 게임을 개발합니다.
-
동영상을 봐주셔서 고맙습니다!
마음에 들었다면, 유튜브에서 가장 간결한 개발 강좌를 계속 만들 수 있도록 구독해주세요! 🔥
-
즉시 시작할 수 있는 유니티 게임 프로그래밍 강좌를 만나보세요 :
► www.boxcollide...
-
책을 선호하나요? 가장 쉽고 완벽한 유니티 C# 책을 만나보세요.
► yes24.com/Produ...
넘나 좋은것 감사합니당
잘보고감니다
질문 하나드려도 될까요?
현재 게임을 만들어보고 있는데 하나의 큰 맵을 네 부분으로 나누어 4개의 카메라를 각 플레이어에 할당해서 진행하는 게임입니다.
2D로 생각 하시면 되고
1 / 2
3 / 4 로 맵을 나누었을 때
1, 2에 있는 플레이어는 총구를 3, 4 쪽으로 하고 3, 4는 1, 2 쪽을 보게해서 경쟁하는 게임을 만들고자하는데
본 질문입니다.
하나의 플레이어 프리팹을 1, 2 position의 플레이어는 게임 참가 시 rorate시켜서 방향을 아래로 보게 하려고 시도 중인데 (테스트로 서버와 클라이언트 각각 1개 2개로 테스트 중입니다.)
클라이언트 없이 서버 (1, 2, 3, 4 모두)에서는 정상 구동 됩니다. 방향도 잘 바뀌고 문제가 없습니다.
근데 클라이언트(2)가 참여하면 문제가 생기는데 클라이언트 화면에서 서버 플레이어(1)가 반대로 보입니다. 클라이언트 플레이어는 서버, 클라이언트 화면 모두에서 rotate도 되지 않고 있습니다. (서버 화면에선 서버 플레이어는 정상적으로 아래를 보는 중)
근데 또 이상한게 서버 플레이어가 클라이언트 화면에서 반대로 보이는데 서버에선 정상적으로 바뀌어서 그런지 발사 방향이나 발자 지점은 바뀐 채로 보이기만 반대로 보입니다.
영상들 수십 번 돌려보면서 이유를 찾아 봤는데 정확한 원인을 찾지 못했네요... 유니티는 관련 정보가 구글에도 많지 않구요 ㅠㅠ
의심가시는 부분이 있다면 답변 부탁드립니다. 질문 드릴 적정한 장소를 찾지 못해서 댓글을 남기네요. 문제가 된다면 삭제하겠습니다! 감사합니다!
동기화의 권한 문제 또는 코드의 실행 내용이 로컬에서만 실행되고 Rpc를 통해 다른 클라이언트에는 전파가 안된것 같은데.. 한쪽에서 실행된 코드의 내용이 다른 한쪽에는 전달이 안된것 같습니다. 로컬에서 실행한 내용은, RPC등의 처리를 통해 다른 클라이언트들에게 전파하지 않는 이상, 로컬에서만 실행되고, 다른 클라이언트에는 반영이 안된다고 할게요.
즉, 처음 플레이어를 두개 생성했을때, 방향을 전환하는 코드가 동작해서 정상적인 방향으로 존재하는게 아니라, 그냥 처음부터 프리팹이 그쪽 방향을 보도록 되어있던게 아닐까요?
@@JeminDEV 답변 감사합니다! 답변해주신 내용 바탕으로 더 고민해보겠습니다
저도 동기화의 문제라고 추측은 했는데 관련된 설정을 어디서 어떻게 하는지 답답하더라구요 ㅜㅜ rpc에 대해서도 한 번 알아보겠습니다!
아무리 해도 안돼서 질문 드립니다 ㅜㅜ. 동영상과 같이 했지만 조금 다른점은 조이스틱을 구현했습니다. 하지만 !isLocalPlayer넣는 순간 오류가 발생합니다.
There is no NetworkIdentity on this object. Please add one.
UnityEngine.Networking.NetworkBehaviour:get_isLocalPlayer()
JoyStick:Update() (at Assets/Scripts/JoyStick.cs:34)
NullReferenceException: Object reference not set to an instance of an object
UnityEngine.Networking.NetworkBehaviour.get_isLocalPlayer () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkBehaviour.cs:22)
JoyStick.Update () (at Assets/Scripts/JoyStick.cs:34)
없을때는 오류가 발생 안했다가 넣는순간 이러니 어찌할바를 모르겠습니다.. 도와주시면 감사합니다 레트로님!
NetworkIdentity 컴포넌트가 해당 게임 오브젝트에게 추가되어있는지 확인해주세요. 그리고 유니티 2018.2 버전과 그 이하 버전을 사용해야 합니다.
뉴 컨텐츠인가요..?!!