今回使用したコード
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, 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}※この出力の上部にもいろいろ出力されていますが、上記13項目だけ確認すれば問題ないです。13項目のうち、押されたボタンに対応した箇所がTrueになります。
ちなみに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 件のコメント :
コメントを投稿