FPSでのマウスの照準


38

一人称シューティングゲームを作成し、カメラをマウスで動かしたいと思います。問題は、カーソルが画面の制限に達すると、カメラが回転しなくなることです。とにかくマウスを中央に保ち、その動きを検出するにはどうすればよいですか?


3
これは素晴らしい質問です。
共産主義のダック

回答:


39

古典的なWin32プログラミングでこれを処理する一般的なアプローチは、各フレームでマウスデルタをキャプチャし、マウスの位置を画面の中心にリセットすることです。また、マウスカーソルを見えないようにしたいのも明らかです。

XNAでも同じことができますが、わずかに異なるインターフェイスで作業するだけです。だからあなたは次のようなことをするかもしれません:

  1. 起動時に、Mouse.SetPositionを使用して、マウスの位置を画面の中心に設定します。
  2. また、起動時に、マウスを非表示にします
  3. すべての入力フレームで、現在のマウスの状態を取得します。
  4. マウスが中心にあることがわかっているので、ステップ3で回復したMouseStateオブジェクトの現在のX値とY値を使用して、両方の次元のデルタ移動を計算できます。これらのデルタを、ゲームロジックの残りの部分(この場合はカメラコードなど)に送ることができます。
  5. 次のフレームに進む前に、マウスを画面の中央にリセットします。

編集:また、「XNA相対マウス入力」(これはあなたが求めているものです)のためにGoogle検索で掘り下げたチュートリアルです。少し古いので、いくつかのメソッドの名前は変更されているかもしれませんが、概念はまだ適用されるはずです。

編集2:「Win32でこれ処理する」ではなく「これ Win32で処理する」と言ってください。


どうもありがとうございました。これはまさに私が探していたものです!;)
ブラックベア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.