私はゲームを書いているのではなく、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ハックを使用してこれを行うための最良の方法は何ですか?