Saat ini saya membuat game penembak orang pertama 3D di browser menggunakan WebGL. Bagaimana cara saya mengimplementasikan mouselook / look gratis untuk game semacam itu?
10
Saat ini saya membuat game penembak orang pertama 3D di browser menggunakan WebGL. Bagaimana cara saya mengimplementasikan mouselook / look gratis untuk game semacam itu?
Jawaban:
Mouselook sekarang didukung di Chrome dan Firefox melalui spesifikasi W3C Pointer Lock . Pada dasarnya:
Artikel tutorial yang bagus adalah Pointer Lock dan First Person Shooter Controls di HTML5Rocks.
sumber
Capture
mousemove
Acara dan menggunakanscreenX
danscreenY
sifat dari objek acara untuk posisi pembaruan kamera (menggunakan delta untuk yang terakhirscreenX
danscreenY
posisi untuk mendapatkan jumlah gerakan).Jika Anda memiliki semacam scenegraph , Anda bisa membuat simpul-setup seperti berikut:
Gerakan di X-Axis memutar YawNode dan gerakan di Y-Axis memutar PitchNode. CameraNode akan dipindahkan ketika pemain bergerak.
sumber
Ini cukup sederhana, dan hanya butuh dua hal.
Contoh kode acara
Berikut beberapa contoh kode sumber untuk melakukan penanganan acara. Modul sistem (yang menangani semua interaksi browser permainan <-->) melacak dua variabel:
lastMousePosition
danlastMouseDelta
.Untuk melacak kamera dengan mouse, Anda hanya perlu
lastMouseDelta
bagaimana Anda akan tahu berapa derajat untuk memutar bingkai-ke-bingkai.Kode pergerakan kamera yang sama
Berikut beberapa contoh kode untuk menangani rotasi kamera. Mengingat jumlah piksel yang telah dipindahkan mouse ke arah X atau Y, putar kamera sebanyak itu.
Kemudian, ketika Anda benar-benar melanjutkan untuk merender dunia Anda, cukup buat matriks model-view dari kamera Anda. (Mengkonversi posisi kamera, menguap, melempar, dan menggulung menjadi vektor yang bisa Anda lewati untuk gluLookAt.) Dan Anda harus baik-baik saja.
sumber