เป้าหมายของเมาส์ใน FPS


38

ฉันต้องการสร้าง First Person Shooter และเลื่อนกล้องด้วยเมาส์ ปัญหาคือเมื่อเคอร์เซอร์ถึงขีด จำกัด ของหน้าจอกล้องจะไม่หมุนอีกต่อไป ฉันจะทำให้เมาส์อยู่ตรงกลางและตรวจจับการเคลื่อนไหวได้อย่างไร?


3
นี่เป็นคำถามที่ยอดเยี่ยม
The Duck คอมมิวนิสต์

คำตอบ:


39

วิธีการทั่วไปในการจัดการสิ่งนี้ในการเขียนโปรแกรม Win32 แบบคลาสสิกคือการจับเดลต้าของเมาส์แต่ละเฟรมแล้วตั้งค่าตำแหน่งเมาส์ไปที่กึ่งกลางของหน้าจอ นอกจากนี้คุณยังต้องการทำให้เคอร์เซอร์ของเมาส์มองไม่เห็นได้ชัดเป็นอย่างอื่นสิ่งที่ดูน่าเกลียด

คุณสามารถทำสิ่งเดียวกันใน XNA คุณเพียงแค่ทำงานกับอินเทอร์เฟซที่แตกต่างกันเล็กน้อย ดังนั้นคุณอาจทำสิ่งที่ชอบ:

  1. เมื่อเริ่มต้นการตั้งค่าตำแหน่งของเมาส์ไปยังศูนย์ของหน้าจอที่มีMouse.SetPosition
  2. นอกจากนี้ในการเริ่มต้นให้เมาส์ที่มองไม่เห็น
  3. กรอบการป้อนข้อมูลทุกคว้ารัฐเมาส์ปัจจุบัน
  4. เนื่องจากคุณรู้ว่าเมาส์อยู่ตรงกลางคุณสามารถใช้ค่า X และ Y ปัจจุบันจากวัตถุMouseState ที่คุณกู้คืนในขั้นตอนที่ 3 เพื่อคำนวณการเคลื่อนที่ของเดลต้าในทั้งสองมิติ คุณสามารถป้อน deltas เหล่านี้ให้กับส่วนที่เหลือของตรรกะเกมของคุณเช่น (ในกรณีของคุณ) รหัสกล้อง
  5. รีเซ็ตเมาส์เป็นศูนย์กลางของหน้าจอก่อนที่จะไปยังเฟรมถัดไป

แก้ไข: นอกจากนี้ที่นี่คือการกวดวิชาที่ฉันขุดผ่านการค้นหาของ Google สำหรับ "การป้อนข้อมูลเมาส์ญาติ XNA" (ซึ่งเป็นสิ่งที่คุณถามเกี่ยวกับ) ฉันคิดว่ามันค่อนข้างเก่าดังนั้นวิธีการบางอย่างอาจมีการเปลี่ยนชื่อของพวกเขา แต่แนวคิดควรยังคงใช้

แก้ไข 2: หมายถึงว่า "การจัดการนี้ใน Win32" และไม่ใช่ "การจัดการนี่คือ Win32" ปรับปรุงตาม


ขอบคุณมาก. นี่คือสิ่งที่ฉันกำลังมองหา! ;)
BlackBear
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.