FPS에서 마우스 조준


38

일인칭 슈팅 게임을 만들고 마우스로 카메라를 움직이고 싶습니다. 문제는 커서가 화면의 한계에 도달하면 카메라가 더 이상 회전하지 않는다는 것입니다. 어떻게하면 마우스를 중앙에 유지하고 움직임을 감지 할 수 있습니까?


3
이것은 좋은 질문입니다.
공산주의 오리

답변:


39

클래식 Win32 프로그래밍에서이를 처리하는 일반적인 방법은 각 프레임에서 마우스 델타를 캡처 한 다음 마우스 위치를 화면 중앙으로 재설정하는 것입니다. 또한 마우스 커서가 보이지 않게 보이게하고 싶을 수도 있습니다.

XNA에서도 동일한 작업을 수행 할 수 있으며 약간 다른 인터페이스로 작업하면됩니다. 따라서 다음과 같은 작업을 수행 할 수 있습니다.

  1. 시작할 때 Mouse.SetPosition 을 사용하여 마우스의 위치를 ​​화면 중앙으로 설정하십시오 .
  2. 또한 시작시 마우스가 보이지 않게하십시오 .
  3. 모든 입력 프레임 에서 현재 마우스 상태를 가져옵니다 .
  4. 마우스가 중앙에 있다는 것을 알고 있으므로 3 단계에서 복구 한 MouseState 객체 의 현재 X 및 Y 값 을 사용하여 두 차원의 델타 이동을 계산할 수 있습니다. 이러한 델타를 카메라 코드와 같은 나머지 게임 로직에 공급할 수 있습니다.
  5. 다음 프레임으로 이동하기 전에 마우스를 화면 중앙으로 재설정하십시오.

편집 : 또한 여기 에 Google 검색을 통해 "XNA 상대 마우스 입력"(당신이 요구하는 것)을 찾은 자습서 가 있습니다. 그것은 약간 오래된 것 같아서 일부 방법은 이름이 변경되었을 수 있지만 개념은 여전히 ​​적용되어야합니다.

편집 2 : 대답 "이 문제를 처리하기 위해 박하 에서 Win32에서"이 아닌 "이 처리는 것입니다 따라 업데이트, Win32에서".


대단히 감사합니다. 이것이 바로 내가 찾던 것입니다! ;)
BlackBear
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.