Mục tiêu của chuột trong FPS


38

Tôi muốn thực hiện một First Person Shooter và di chuyển máy ảnh bằng chuột. Vấn đề là khi con trỏ đạt đến giới hạn của màn hình, máy ảnh sẽ không quay nữa. Làm thế nào tôi có thể giữ chuột ở giữa và phát hiện chuyển động của nó?


3
Đâ là một câu hỏi tuyệt vời.
Vịt Cộng sản

Câu trả lời:


39

Cách tiếp cận chung để xử lý vấn đề này trong lập trình Win32 cổ điển là chụp chuột delta từng khung hình, sau đó đặt lại vị trí chuột về giữa màn hình. Bạn cũng muốn làm cho con trỏ chuột trở nên vô hình, rõ ràng, vì nếu không mọi thứ trông xấu xí.

Bạn có thể làm điều tương tự trong XNA, bạn chỉ làm việc với một giao diện hơi khác. Vì vậy, bạn có thể làm một cái gì đó như:

  1. Khi khởi động, đặt vị trí của chuột ở giữa màn hình của bạn với Mouse.SetPocation .
  2. Cũng lúc khởi động, làm cho chuột vô hình .
  3. Mỗi khung hình đầu vào, lấy trạng thái chuột hiện tại .
  4. Vì bạn biết chuột nằm ở trung tâm, bạn có thể sử dụng các giá trị X và Y hiện tại từ đối tượng MouseState mà bạn đã phục hồi ở bước # 3 để tính toán chuyển động delta theo cả hai chiều. Bạn có thể cung cấp các đồng bằng này cho phần còn lại của logic trò chơi của mình, chẳng hạn như (trong trường hợp của bạn) mã máy ảnh.
  5. Đặt lại chuột vào giữa màn hình trước khi chuyển sang khung tiếp theo.

EDIT: Ngoài ra, đây là một hướng dẫn tôi đã tìm hiểu thông qua một tìm kiếm của Google về "đầu vào chuột tương đối XNA" (đó là những gì bạn đang hỏi về). Tôi nghĩ nó hơi cũ, vì vậy một số phương pháp có thể đã thay đổi tên của chúng, nhưng các khái niệm vẫn nên được áp dụng.

EDIT 2: Đồng nghĩa với việc "xử lý việc này trong Win32" và không "xử lý việc này Win32", được cập nhật tương ứng.


Cảm ơn nhiều. điều này thật đúng với gì mà tôi đã tìm kiếm! ;)
BlackBear
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.