해결된 질문
작성
·
216
답변 2
0
0
안녕하세요,
어차피 InputManager도 동일한 프레임으로 Update하고 있으니,
굳이 객체들의 Update에 맞춰서 해당 객체를 움직여야 할 필요는 없습니다.
물론 객체의 Update에서도 동일하게 Transform을 변경하고 있다면
동시에 2 군데에서 하니 문제가 될 수는 있겠지만,
그게 아니라 1 군데에서만 실제 좌표 계산을 하면 특별히 문제가 된다고 보긴 어렵습니다.
예를 들면 역할을 분담해서 InputManager에서는 마우스 입력을 받아 목적지를 지정하는 용도로 사용하고,
실제 좌표 계산은 다음 틱에 호출되는 Update에서 하는 방식으로 분담할 수 있겠죠.
물론 말씀주신대로 1틱 전/후의 차이가 날 수는 있지만,
스타크래프트와 같이 틱 단위로 정확하게 위치를 맞출 필요가 없는 게임이라면 크게 신경쓸 필요가 없어 보입니다.
말씀주신 큐를 이용한 방법은 싱글 게임이라면
역시나 굳이 그 정도까지 정확하게 맞출 필요는 없어 보이지만,
온라인 게임이라면 충분히 고려할 수 있는 방법이 됩니다.
Part3은 싱글 게임이니 inputManager에서 객체들을 조종하고 있는데,
사실 나중에 서버가 붙으면 패킷을 받은 network 쪽에서 비슷하게 객체들을 조종하게 됩니다.
그런데 네트워크 송수신은 별도 쓰레드에서 비동기로 처리하는 경우가 많은데
유니티 정책상 백그라운드 쓰레드에서 게임 쓰레드에 접근해 조작할 수 없습니다.
그러니 중간에 있는 어떤 경로(ex. 큐)를 통해서 인풋을 전달해주고,
나중에 큐에서 내용물을 꺼내서 움직이는 방법은 괜찮은 방법이라 할 수 있겠습니다.