작성
·
356
·
수정됨
0
https://blog.naver.com/we5046/223172915438
강사님께서 진행하신대로
이동할때 Map에게 모든 정보를 넘기므로 충돌을 관리하는데, EnterGame 부분에 Map.ApplyMove를 추가하여 플레이어가 아무 이동을 하지 않고 0,0 좌표에 있을때 화살 타격이 불가능하여 추가 할 경우 타격을 입게 될 것임이 분명한데 해당 영상을 보시면 Unity에서 실행 하는 Player는 타격을 입고, 그뒤 추가로 생성하는 Player또한 타격을 입는데, 맨 처음 같이 생성된 Player들중 한명을 움직이지 않고 냅두면 화살을 피하는 문제가 발생합니다.
이러한 오류가 발생하는 이유가 무엇인지 궁금합니다.
해당 오류가 왜 발생하는지 생각해보니, 처음 실행된 Player1에게는 새로 등장한 Player2의 정보가 Player1의 맵으로 전달이 되지않은 것인가 라는 문제 점을 생각해보게 되었습니다.
그래서 기존 EnterGame에서 해당 플레이어의 등장을 타인한테 정보전송하는 부분에 해당 플레이어의 위치를 Map에 전파하도록 작성하니 정상적으로 작동하게 되었습니다.
답변 2
1
네 강의에서 만든 컨텐츠는 즉흥적으로 만든 부분이 많아서
짜잘한 버그가 있을 수 있습니다.
실제로 이걸 기반으로 실전 테스트 프로젝트를 만들 때
try catch 예외 처리 누락이나 좌표 동기화 미스 등 군데군데 조금씩 문제가 있긴 했었으니
너무 100% 정답이라고 생각하지 마시고 지금처럼 디버깅을 통해 버그를 찾아주시길 바랍니다
0
안녕하세요, 인프런 AI 인턴이에요. 질문에 대해 답변드릴게요.
해당 문제가 발생하는 이유에 대해서 생각해보겠습니다. 여러 Player들 중 한 명을 움직이지 않고 냅두면 화살을 피하는 문제가 발생한다고 하셨는데요, 이는 Player1과 Player2 사이의 정보 전달에 문제가 있을 수 있습니다.
기존 EnterGame에서 해당 플레이어의 등장을 타인에게 정보 전송하는 부분에 해당 플레이어의 위치를 Map에 전파하도록 작성한 것으로 보아, 이 문제는 해당 플레이어의 위치 정보가 전달되지 않는 문제로 해결되었다고 하셨습니다. 이는 맞는 접근 방식이 될 수 있습니다.
따라서, 문제가 발생했을 때 해당 플레이어의 위치 정보가 정확히 Map에 전달되지 않거나 전달되지 않은 것으로 보여질 수 있습니다. 이럴 경우 해당 플레이어의 이동 정보가 충돌 관리 시스템에 반영되지 않아, 피해를 받지 않는 것이 가능한 것입니다.
한 가지 생각할 수 있는 해결 방법은, 플레이어의 이동 정보가 정상적으로 전달되도록 코드를 확인하고 수정하는 것입니다. 또는 충돌 관리 시스템이 플레이어의 위치를 정확히 파악할 수 있도록, 위치 정보를 업데이트하는 로직을 추가하는 것도 도움이 될 수 있습니다.
문제 해결 시 좀 더 자세한 정보가 필요하다면, 코드나 관련 로그를 참고하여 더 구체적인 도움을 드릴 수 있습니다. 많은 도움이 되었으면 좋겠어요. 더 궁금한 점이 있다면 언제든지 물어보세요. 감사합니다.