OSDN Ticket Archive


Ticket #39085

iOS版 ゲームコントローラー対応

登録: 2019-03-25 00:56 最終更新: 2019-03-31 22:40

報告者:
yknk
担当者:
yknk
チケットの種類:
機能リクエスト
状況:
完了
コンポーネント:
MIDITrail Ver.1.2.x for iOS
マイルストーン:
Version 1.2.3 for iOS (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

ゲームコントローラーを用いて、メイン画面で視点移動や演奏に関する操作を実施できるようにする。

機能追加の背景

VRグラスを利用する場合、iPhoneの画面を操作できないため、ゲームコントローラーを用いて操作できるようにする。 VR Viewを表示していない場合でも、ゲームコントローラを用いた操作は可能とする。

チケットの履歴

2019-03-25 00:56 更新者: yknk
  • 新しいチケット "iOS版 ゲームコントローラー対応" が作成されました
2019-03-25 00:58 更新者: yknk
コメント

仕様

ゲームコントローラーの識別

  • 複数のゲームコントローラーが接続されている場合、先頭のコントローラーを制御対象とする。
  • ゲームコントローラーの接続通知、切断通知を受け取った時は、接続されているゲームコントローラーを確認して、 先頭のコントローラーを制御対象に切り替える。
  • ゲームコントローラーが1台も見つからなかった時は、何もしない。

メイン画面

ゲームコントローラーの操作と機能のマッピングは次の通り。カスタマイズには対応しない。

  • Pause ボタン: 再生/一時停止
  • A ボタン: 再生/一時停止
  • B ボタン: 停止
  • X ボタン: 視点移動:下降
  • Y ボタン: 視点移動:上昇
  • L1/R1 ボタン: 再生速度
  • L2/R2 トリガーボタン: 再生スキップ
  • 十字キー: 視点移動:前後左右
  • 左スティック: 視点移動:前後左右
  • 右スティック: 視線方向

設定画面

  • Game Controller セクションを追加。接続されているゲームコントローラー名称を表示する。
  • 複数のゲームコントローラーが接続されている場合、先頭のコントローラーを表示する。
  • ゲームコントローラーが接続されていない場合は(not found)を表示する。
  • ゲームコントローラー名称のセルをタップすると、無線ゲームコントローラーの検索を開始する。 検索開始後にセルをタップすると、検索を中止する。
2019-03-25 00:58 更新者: yknk
コメント

対策1:メイン画面

MTMainViewCtrl

メンバにゲームコントローラー制御m_pGameControllerを追加。 メンバにゲームコントローラーボタン(A,B,L1,L2,R1,R2)の直前値m_Button*を追加。

MTMainViewCtrl::initWithNibName

ゲームコントローラー関連メンバの初期化処理を追加。 ゲームコントローラー接続/切断通知先登録処理を追加。

MTMainViewCtrl::startScene

ゲームコントローラー選択選択メソッド呼び出しを追加。

MTMainViewCtrl::stopScene

ゲームコントローラー制御の解放処理を追加。

MTMainViewCtrl::drawScene

シーンオブジェクトへのゲームコントローラー制御設定処理を追加。

MTMainViewCtrl::onGameControllerDidConnect

ゲームコントローラー接続通知ハンドラを追加。

MTMainViewCtrl::onGameControllerDidDisconnect

ゲームコントローラー切断通知ハンドラを追加。

MTMainViewCtrl::selectGameController

ゲームコントローラー選択メソッドを追加。

MTMainViewCtrl::initializeGameController

ゲームコントローラー初期化メソッドを追加。ボタン押下時のイベントハンドラ登録を実施。

MTMainViewCtrl::onGamePadPauseButtonOnController

ポーズボタンイベントハンドラを追加。

MTMainViewCtrl::onGamePadButtonAChanged

Aボタンイベントハンドラを追加。

MTMainViewCtrl::onGamePadButtonBChanged

Bボタンイベントハンドラを追加。

MTMainViewCtrl::onGamePadButtonL1Changed

L1ボタンイベントハンドラを追加。

MTMainViewCtrl::onGamePadButtonL2Changed

L2ボタンイベントハンドラを追加。

MTMainViewCtrl::onGamePadButtonR1Changed

R1ボタンイベントハンドラを追加。

MTMainViewCtrl::onGamePadButtonR2Changed

R2ボタンイベントハンドラを追加。

2019-03-25 00:58 更新者: yknk
コメント

対策2:シーン制御クラス

MTScene::SetGameController

ゲームコントローラー設定メソッドを追加。

MTScenePianoRoll3D::SetGameController

ゲームコントローラー設定メソッドを追加。 同じメソッドをMTScenePianoRoll3DLive MTScenePianoRollRain, MTScenePianoRollRainLive クラスに追加。

2019-03-25 00:59 更新者: yknk
コメント

対策3:1人称カメラクラス

MTFirstPersonCam

メンバにゲームコントローラー制御m_pGameControllerを追加。 リファクタリングでメンバの定義順序を整理。

MTFirstPersonCam::MTFirstPersonCam

コンストラクタにm_pGameControllerの初期化処理を追加。 リファクタリングでメンバの初期化処理順序を整理。

MTFirstPersonCam::Transform

ゲームコントローラーの右スティック操作による視線方向移動処理を追加。

MTFirstPersonCam::_TransformCamPosition

ゲームコントローラーの十字キーと左スティック操作による視点移動処理(前後左右)を追加。 ゲームコントローラーのX,Yボタン操作による視点移動処理(上下)を追加。

MTFirstPersonCam::SetGameController

ゲームコントローラー設定メソッドを追加。

2019-03-25 00:59 更新者: yknk
コメント

対策4:設定画面

MTSettingViewCtrl

無線ゲームコントローラー検索中フラグm_isSearchingControllersを追加。

MTSettingViewCtrl::initWithNibName

ゲームコントローラー接続/切断通知先登録処理を追加。

MTSettingViewCtrl::viewDidLoad

無線ゲームコントローラ検索状態メンバを初期化。

MTSettingViewCtrl::tableView titleForHeaderInSection:

ゲームコントローラーセクションのヘッダ表示を追加。

MTSettingViewCtrl::tableView numberOfRowsInSection:

ゲームコントローラーセクションの項目数を追加。

MTSettingViewCtrl::tableView cellForRowAtIndexPath:

ゲームコントローラーセクションの表示処理呼び出しを追加。

MTSettingViewCtrl::makeGameControllerCellForIndexPath

ゲームコントローラー用テーブル作成メソッドを追加。

MTSettingViewCtrl::tableView didSelectRowAtIndexPath:

ゲームコントローラーセクションのセル選択ハンドラ呼び出しを追加。

MTSettingViewCtrl::onSelectGameControllerCellForIndexPath

ゲームコントローラーセクションのテーブルセル選択イベントハンドラを追加。

MTSettingViewCtrl::onCompleteWirelessControllerDiscovery

無線ゲームコントローラ検索完了イベントハンドラを追加。

MTSettingViewCtrl::onGameControllerDidConnect

ゲームコントローラー接続通知イベントハンドラを追加。

MTSettingViewCtrl::onGameControllerDidDisconnect

ゲームコントローラー切断通知イベントハンドラを追加。

MTSettingViewCtrl::updateTableForGameController

ゲームコントローラー表示更新メソッドを追加。

2019-03-25 23:54 更新者: yknk
コメント

対策5:プロジェクト設定

Targets / MIDITrail

Linked Frameworks and Libraries に GameController.framework を追加。

2019-03-25 23:54 更新者: yknk
コメント

対策6:操作ヘルプ画面

HowToView-iPad.html

ゲームコントローラーの操作方法を追記。

HowToView-iPhone.html

ゲームコントローラーの操作方法を追記。

2019-03-31 22:40 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

添付ファイルはありません