FPS'de fare amacı


38

Bir First Person Shooter yapmak ve kamerayı fareyle hareket ettirmek istiyorum. Sorun, imleç ekranın sınırlarına ulaştığında, kameranın artık dönmemesidir. Fareyi ortalanmış halde nasıl hareket ettirebilirim?


3
Bu harika bir soru.
Komünist Ördek

Yanıtlar:


39

Bunu klasik Win32 programlamasında ele almanın genel yaklaşımı, her karede fare deltasını yakalamak ve ardından fare konumunu ekranın ortasına sıfırlamaktır. Ayrıca, fare imlecini görünmez kılmak, tabii ki, aksi halde işler çirkin görünüyor.

Aynı şeyi XNA'da da yapabilirsiniz, sadece biraz farklı bir arayüzle çalışırsınız. Yani şöyle bir şey yapabilirsin:

  1. Başlangıçta, farenin konumunu Mouse.SetPosition ile ekranınızın ortasına ayarlayın .
  2. Ayrıca başlangıçta, fareyi görünmez hale getirin .
  3. Her giriş çerçevesi, geçerli fare durumunu yakalar .
  4. Farenin ortada olduğunu bildiğiniz için , her iki boyutta delta hareketini hesaplamak için adım 3'te kurtardığınız MouseState nesnesindeki geçerli X ve Y değerlerini kullanabilirsiniz . Bu deltaları (sizin durumunuzda) kamera kodu gibi oyun mantığınızın geri kalanına besleyebilirsiniz.
  5. Sonraki kareye geçmeden önce fareyi ekranın ortasına sıfırlayın.

EDIT: Ayrıca, burada "XNA göreceli fare girişi" (hakkında ne soruyorsun) için bir Google arama yoluyla kazdık bir öğretici . Biraz eski, bence, bazı yöntemlerin isimleri değiştirilmiş olabilir, ancak kavramlar hala geçerli olmalı.

DÜZENLEME 2: say "Bu işleme demek bu içinde Win32" ve "bu işleme ise buna göre güncellenen, Win32".


Çok teşekkür ederim. bu tam olarak aradığım şeydi! ;)
Blackberry
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.