6

私はゲームを書いているのではなく、Pygameを使用した科学的なレンダラーを書いています。一人称シューティングゲームと同じようにコントロールを機能させて、ユーザーが使い慣れたコントロールのセットを使用してナビゲートできるようにします。

SkyrimやHalf-Lifeなどの「look」機能と同じプロパティを持つコードを作成しようとしましたが、マウスはカーソルを動かしません。無限の円で周りを見回すことができます。クリックしても効果はありません。

コントロールの最初の試み:

(ゲームループ内のコード)

delta_y, delta_x = pygame.mouse.get_rel()
rotation_direction.x = float(delta_x)
rotation_direction.y = float(delta_y)

(理由は聞かないでください。ただし、期待される外観方向を取得するには、yとxをこのように逆にする必要があります。これは、私のものではないカメラ変換の実装と関係がある必要があります。)

ただし、これにより、カーソルがウィンドウの上部に配置され、カーソルが画面の端に到達すると、ウィンドウの回転が停止します。つまり、コードは画面上の実際の位置を報告しています。

ゲームループごとにマウスの位置を「リセット」しようとしました(そして、ちなみに、マウスを非表示にしました)。

pygame.mouse.set_pos([150, 150])
pygame.mouse.set_visible(False)

ただし、これにより、次のループで対称的な「移動して開始」デルタが生成されます。つまり、どこにも「見る」ことができませんでした。

要約すると、私は次のことをしたいと思います。

  • デバイスから報告された実際のマウスの動きを検出する
  • OSカーソルを移動/表示しない
  • 「画面の端」でクリップしない

Pygameまたは他のPythonハックを使用してこれを行うための最良の方法は何ですか?

4

3 に答える 3

5

http://www.pygame.org/docs/ref/mouse.html

マウスカーソルが非表示になっていて、入力が現在のディスプレイに表示されている場合、マウスは仮想入力モードに入ります。このモードでは、マウスの相対的な動きが画面の境界線によって停止されることはありません。関数を参照してくださいpygame.mouse.set_visible-マウスカーソルを非表示または表示し、pygame.event.set_grabdocs)-他のアプリケーションとの入力デバイスの共有を制御して、これを構成します。

于 2012-09-23T22:41:51.593 に答える
0

pyOpenGLを使用しているので、gluLookAt()例を試してください:gluLookAtを適切に使用するにはどうすればよいですか?

于 2012-09-24T01:28:26.680 に答える
0

呼び出しが実行した相対的な動きに関係なく、「破棄」pygame.mouse.get_rel()する呼び出しの直後にもう一度呼び出してみてください。set_posset_pos

于 2012-09-23T22:40:51.320 に答える