Celowanie myszką w FPS


Odpowiedzi:


39

Ogólne podejście do obsługi tego w klasycznym programowaniu Win32 polega na uchwyceniu delty myszy w każdej ramce, a następnie zresetowaniu pozycji myszy do środka ekranu. Oczywiście chcesz też, aby kursor myszy był niewidoczny, ponieważ w przeciwnym razie sprawy wyglądają brzydko.

Możesz zrobić to samo w XNA, po prostu pracujesz z nieco innym interfejsem. Więc możesz zrobić coś takiego:

  1. Podczas uruchamiania ustaw pozycję myszy na środku ekranu za pomocą Mouse.SetPosition .
  2. Również podczas uruchamiania uczyń mysz niewidoczną .
  3. Każda ramka wejściowa, chwyć bieżący stan myszy .
  4. Ponieważ wiesz, że mysz była w środku, możesz użyć bieżących wartości X i Y z obiektu MouseState odzyskanego w kroku # 3, aby obliczyć ruch delta w obu wymiarach. Możesz podać te delty do reszty logiki gry, takiej jak (w twoim przypadku) kod kamery.
  5. Zresetuj mysz do środka ekranu przed przejściem do następnej klatki.

EDYCJA: Również tutaj jest samouczek, który wykopałem za pomocą wyszukiwarki Google dla „XNA względnego wejścia myszy” (o co pytasz). Myślę, że jest trochę stary, więc niektóre metody mogły mieć zmienione nazwy, ale koncepcje powinny nadal obowiązywać.

EDYCJA 2: Chcę powiedzieć „obsługa tego w Win32”, a nie „obsługa tego jest Win32”, odpowiednio zaktualizowana.


Dziękuję Ci bardzo. właśnie tego szukałem! ;)
BlackBear
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.