見出し画像

Pyxelでゲームパッド入力させるときに気をつけること(A/Bボタンの配置が逆?!)

レトロゲームエンジンPyxelには "pyxel.GAMEPAD1_BUTTON_A" のように、ゲームパッドからの操作を受け付ける機能があります。便利便利。

ですが、1点気をつけるべきことがあります。それは「ゲームパッドの種類によってはA/Bボタンの(X/Yボタンも)配置が逆になる」という点です。

まず、以下はNintendo製のコントローラ例。Aボタンが右に配置されています。ほか、Sonyのプレステのコントローラの◯ボタンも右配置ですね。

日本のゲームプレイヤーはこの配置に慣れていることが多いはず。


Nintendo製のコントローラの例

一方、Microsoftのゲームパッドだと以下のように、Aボタンが下に配置されています。

どうやら海外の(といっても国によると思いますが、アメリカなどの)プレイヤーとしてはこちらのほうが標準形のようです。

Microsoft製のコントローラの例

んで、Pyxelの "pyxel.GAMEPAD1_BUTTON_A" なのですが、国際標準を意識しているためか、下に配置されたボタンをAボタンと認識するようです。

つまり Pyxelで "pyxel.GAMEPAD1_BUTTON_A" ボタンを決定やジャンプの用途でコーディングした場合、Nintendoなどのゲームパッドを使っている人がプレイすると、「Bボタンで決定やジャンプ」という操作になってしまいます。

「右側の下ボタンでxxの操作」と説明していれば間違いにはならないのですが、「Aボタンでxxの操作」と説明していたり、慣例的にAボタンの操作が自然な機能に "pyxel.GAMEPAD1_BUTTON_A" を割り当てたりしていると「あれ、逆じゃね?」と一部のプレイヤーに思われてしまうので注意です。

開発側の対策は?

2つあると思います。

  1. コンフィグ画面を用意して、下側Aボタンと右側Aボタン両方に対応できるようにする

  2. 最初にAボタンを押させて、それが右側ボタン(pyxel.GAMEPAD1_BUTTON_B)だったら、以降は右側ボタンをAボタンとして扱う。

2ですが、たとえばゲームの起動直後に以下のような画面になっていたら、プレイヤーは自分のゲームパッドでの「A」ボタンを押すはずなので、プレイヤーに意識させずに解決できるというわけですね。

自分の持っているコントローラー次第では気付きにくい問題なので、お気をつけくださいませ!


いいなと思ったら応援しよう!