今回使用したコード
Git HubにPS4コントローラの入力を受け取るコードがあったので、それを使います。
Git HubのURLは下記です。コードについてはリンク先を参照してください。
今回はこのコードをローカルに落として、実行します。
実行するのにpygameが必要なので、まだ入れていない方はpipコマンドでインストールしてください。
使い方は簡単でパソコンとPS4をUSBで接続した状態でコードを実行します。
もし実行時に下記のようなエラーが出た場合はPS4とパソコンの接続がうまくいってない可能性があるので、接続を再確認してください。
もし実行時に下記のようなエラーが出た場合はPS4とパソコンの接続がうまくいってない可能性があるので、接続を再確認してください。
File ".\controller.py", line 32, in init
self.controller = pygame.joystick.Joystick(0)
pygame.error: Invalid joystick device number
今回実行するにあたり、挙動を確認したかったので、time関数をimportしてsleepさせます。sleepを入れたところは下記の個所です。また、一部python2用の記述がされてエラーが出ていたので、変更しています。
while True:
for event in pygame.event.get():
if event.type == pygame.JOYAXISMOTION:
self.axis_data[event.axis] = round(event.value,2)
elif event.type == pygame.JOYBUTTONDOWN:
self.button_data[event.button] = True
elif event.type == pygame.JOYBUTTONUP:
self.button_data[event.button] = False
elif event.type == pygame.JOYHATMOTION:
self.hat_data[event.hat] = event.value
# Insert your code on what you would like to happen for each event here!
# In the current setup, I have the state simply printing out to the screen.
# os.system('clear')#python2.*用の画面クリア
os.system('cls')#python3.*用の画面クリア
pprint.pprint(self.button_data)#入力されたボタンを表示
pprint.pprint(self.axis_data)#入力されたジョイスティックの表示
pprint.pprint(self.hat_data)#入力された十字キーの表示
time.sleep(3)#動きを確認するために3秒間停止させる。
実行結果
このプログラムを実行するとボタンの入力、ジョイスティックの入力、十字キーの入力の3つを表示されます。 ボタンについては下記のようなものが出力されます。{0: False,※この出力の上部にもいろいろ出力されていますが、上記13項目だけ確認すれば問題ないです。13項目のうち、押されたボタンに対応した箇所がTrueになります。
1: False,
2: False,
3: False,
4: False,
5: False,
6: False,
7: False,
8: False,
9: False,
10: False,
11: False,
12: False,
13: False}
ちなみに0~13の割り当ては以下の通りです。
0:□、1:×、2:〇、3:△、4:L1、5:R1、6:L2、7:R2、8:SHARE、9OPTIONS、10:L3(左スティック押下)、11:R3(右スティック押下)、12:PS4ボタン、13:タッチパッド押す
ジョイスティックの出力は下記のとおりです。
{0: -0.0, 1: -0.05, 2: 0.02, 3: -0.04, 4: -1.0, 5: -1.0}
割り当ては下記の通りです。
0:左スティックのx軸(左に倒すと-1、右に倒すと+1)、1:左のスティックのy軸(上に倒すと-1、下に倒すと+1)、2:右スティックのx軸(左に倒すと-1、右に倒すと+1)、3:右のスティックのy軸(上に倒すと-1、下に倒すと+1)
4,5は-1に張り付きで特に変化はありませんでした。(確認方法が悪いのかもしれませんが...)
ちなみに上記は何も出力は何も押してない状況なのですが、0~4の値がすべて0になっていません。私のコントローラがデフォルトで少し入力された状態になっているのですかね?
十字キーの出力は下記のとおりです。
{0: (0, 0)}
割り当ては下記の通りです。
(0,0) = (左右、上下)
※左と下が-1で右と上が+1です。
0 件のコメント:
コメントを投稿