LIFULL Creators Blog

「株式会社LIFULL(ライフル)」の社員によるブログです。

GameController.frameworkをつかってG550ゲームパッドのボタンイベントを認識してみよう

サムです。前回の「GameController.frameworkをつかってG550ゲームパッドとSpriteKitゲームを接続してみよう」に引き続き今回は、接続したG550のボタンに応じたイベントを取得してみます。

0. 前回まで

GameController.frameworkをつかってG550ゲームパッドとSpriteKitゲームを接続してみよう

1. ポーズ&リスタート(一時停止と再開)のイベント

まず、すべてのゲームコントローラには、ポーズボタンがあります。
このボタンはほとんどのゲームでは、ゲームの一時停止、および再開というイベントが走ると思います。

このイベントには、コントローラオブジェクトのcontrollerPausedHandlerプロパティにブロック処理を追加することで可能になります。
GameController.framework自体には、ゲームの一時停止におけるユーザインターフェースは提供されていません
ポーズボタンを押したときのゲーム停止などは、自分たちで実装する必要があります。

2. A/B/X/Yボタン、Dパッド、L/Rトリガーのイベント

今回使用しているゲームコントローラは G550 です。このコントローラはGCGamepadクラスを使います。
他にもGCExtendedGamepadクラスというGCGamepadクラスと比べると、ボタン数が多いゲームコントローラもあります。

すべてのボタンのイベントを取得するには、GCGamePadオブジェクトのvalueChangedHandlerプロパティにブロック処理を追加するだけです。
この処理では、ボタンが押されるたびにイベントが発生して、押されたボタンの処理が実行されます。
ボタンの同時押しなどのイベントを設定したいときにつかいましょう

ボタンごとのイベントを設定したい場合は、ボタンオブジェクト自体にvalueChangedHandlerプロパティにブロック処理を追加するだけです。
これで、ボタンのステータスを見張ることが出来ます。

まとめ

ゲームコントローラは、GCGamePadクラスだけではなくGCExtendedGamepadクラスも必ず実装しましょう
何のコントローラを使うかは、ユーザが決めることですからね。
これらのソースコードはGitHubで公開しております。

参考、引用元

Apple Developer - Game Controller Programming Guide