Arahkan mouse ke FPS

38

Saya ingin membuat First Person Shooter dan memindahkan kamera dengan mouse. Masalahnya adalah ketika kursor mencapai batas layar, kamera tidak akan berputar lagi. Bagaimana saya bisa menjaga mouse tetap di tengah dan mendeteksi pergerakannya?

Beruang hitam
sumber
3
Ini pertanyaan yang bagus.
Bebek Komunis

Jawaban:

39

Pendekatan umum untuk menangani ini dalam pemrograman Win32 klasik adalah untuk menangkap delta mouse setiap frame, dan kemudian mengatur ulang posisi mouse ke tengah layar. Anda juga ingin membuat kursor mouse tidak terlihat, jelas, karena jika tidak semuanya terlihat jelek.

Anda dapat melakukan hal yang sama di XNA, Anda hanya bekerja dengan antarmuka yang sedikit berbeda. Jadi, Anda mungkin melakukan sesuatu seperti:

  1. Saat memulai, atur posisi mouse ke tengah layar Anda dengan Mouse.SetPosition .
  2. Juga saat startup, buat mouse tidak terlihat .
  3. Setiap frame input, ambil status mouse saat ini .
  4. Karena Anda tahu bahwa mouse berada di tengah, Anda dapat menggunakan nilai X dan Y saat ini dari objek MouseState yang Anda pulihkan di langkah # 3 untuk menghitung pergerakan delta di kedua dimensi. Anda dapat mengumpankan delta-delta ini ke sisa logika gim Anda, seperti (dalam kasus Anda) kode kamera.
  5. Atur ulang mouse ke tengah layar sebelum pindah ke bingkai berikutnya.

EDIT: Juga, berikut adalah tutorial yang saya gali melalui pencarian Google untuk "input mouse relatif XNA" (yang Anda tanyakan). Ini agak tua, saya pikir, jadi beberapa metode mungkin telah mengubah nama mereka, tetapi konsep-konsepnya masih harus diterapkan.

EDIT 2: Dimaksudkan untuk mengatakan "menangani ini di Win32" dan tidak "menangani ini adalah Win32," diperbarui sesuai.

Josh
sumber
Terima kasih banyak. ini persis apa yang saya cari! ;)
BlackBear