Ticket #45282

iOS版 スクリーンゲームパッドを追加

Eröffnet am: 2022-07-31 00:10 Letztes Update: 2022-07-31 11:10

Auswertung:
Verantwortlicher:
Status:
Geschlossen
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Gefixt
Datei:
Keine

Details

メインビューにスクリーンゲームパッドを追加する。

これまでスクリーン端(左、右、下)をスワイプすることで、視点の空間移動を操作可能としてきたが、 より簡単に空間移動できるようにするため、スクリーン上にゲームパッドを表示する。

Ticket-Verlauf (3/10 Historien)

2022-07-31 00:10 Aktualisiert von: yknk
  • New Ticket "iOS版 スクリーンゲームパッドを追加" created
2022-07-31 00:30 Aktualisiert von: yknk
Kommentar

仕様

スクリーンに表示するゲームパッドのボタン

  • 方向キー(上下左右:前後移動と左右移動)
  • X,Yボタン(上昇、下降)

スクリーン端のスワイプ操作

  • スクリーン端のスワイプ操作はこれまで通り機能を残す。
  • スクリーン上端の回転操作はスクリーンゲームパッドでは対応しない。

スクリーン中央スワイプによる視線操作の仕様変更

スクリーン中央スワイプによる視線操作について、X軸Y軸の回転方向を従来から反転させ、一般的なゲーム操作に合わせる。 スクリーンゲームパッドの導入によって、スワイプによる視線操作の違いに違和感が生じるようになったため。 ただし設定画面で回転方向を元に戻すことを可能とする。

設定画面

  • Game Controllerセクションの名前をControllerに変更する。
  • Controllerセクションに、X軸Y軸反転のスイッチ"Touch: Invert X and Y Axis"を追加する。デフォルトはOFF。
2022-07-31 00:31 Aktualisiert von: yknk
Kommentar

対策1 画面レイアウト

MTMainView_iPhone*.xib

  • 方向キー(上下左右ボタン)、X,Yボタンを追加。

MTMainView_iPad*.xib

  • 方向キー(上下左右ボタン)、X,Yボタンを追加。

画像ファイル

ボタン用画像ファイルを追加。

Resources/img/iPad/Button-DPadUp.png
Resources/img/iPad/Button-DPadDown.png
Resources/img/iPad/Button-DPadLeft.png
Resources/img/iPad/Button-DPadRight.png
Resources/img/iPad/Button-X.png
Resources/img/iPad/Button-Y.png
Resources/img/iPhone/Button-DPadUp.png
Resources/img/iPhone/Button-DPadDown.png
Resources/img/iPhone/Button-DPadLeft.png
Resources/img/iPhone/Button-DPadRight.png
Resources/img/iPhone/Button-X.png
Resources/img/iPhone/Button-Y.png

2022-07-31 00:31 Aktualisiert von: yknk
Kommentar

対策2 パラメータ定義

MTParam.h

  • フォーマット文字列 MT_CONF_CATEGORY_CONTROLLER の定義を追加。
  • フォーマット文字列 MT_CONF_SECTION_TOUCH の定義を追加。
2022-07-31 00:32 Aktualisiert von: yknk
Kommentar

対策3 一人称カメラクラス

MTScreenGamePadCtrl

  • スクリーンゲームパッド制御クラスを新規追加。
  • 既存のゲームパッド制御クラスMTGamePadCtrlとI/Fを同じにする。
  • ただし、画面のボタン押下状態を反映するためのゲームパッド状態設定メソッドを追加している点が異なる。

MTFirstPersonCam

  • メンバにスクリーンゲームパッド制御のポインタm_pScreenGamePadCtrlを追加する。オブジェクト本体はメインビューが持つ。
  • メンバに視線方向操作のX軸Y軸反転ファクタm_TouchInvertXYAxisFactorを追加。

MTFirstPersonCam::MTFirstPersonCam

  • 視線方向操作のX軸Y軸反転ファクタm_TouchInvertXYAxisFactorの初期化処理を追加。

MTFirstPersonCam::Initialize

  • ユーザ設定読み込み関数の呼び出し処理を追加。

MTFirstPersonCam::Transform

  • スワイプによる視線方向操作のデルタ値を算出するとき、X軸Y軸反転ファクタを含めるように修正。
  • デルタ値の速度因子を-1.0から+2.0に変更。この変更によりX軸Y軸の回転方向がこれまでから反転する。またスワイプによる回転速度を2倍にして、操作性を向上させる。
  • スクリーンゲームパッドの状態更新処理を追加。

MTFirstPersonCam::_TransformCamPosition

  • カメラ位置の移動にスクリーンゲームパッドの状態を反映するように修正。

MTFirstPersonCam::_LoadUserConf

  • 設定ファイル読み込みメソッドを追加。X軸Y軸反転の設定を読み込む。

MTFirstPersonCam::SetScreenGamePadCtrl

  • スクリーンゲームパッド登録メソッドを追加。メインビューが持つスクリーンゲームパッドオブジェクトのポインタを受け取る。
2022-07-31 00:32 Aktualisiert von: yknk
Kommentar

対策4 メインビュー制御クラス

MTMainViewCtrl

  • メンバにスクリーンゲームパッドのボタンオブジェクト6個(m_pScreenGamePad_*)を追加。
  • メンバにスクリーンゲームパッド最終ボタン押下時刻m_LastTouchTimeOfScreenGamePadを追加。
  • メンバにスクリーンゲームパッドオブジェクトm_ScreenGamePadCtrlを追加。
  • メンバにスクリーンゲームパッド表示状態m_isDisplayButtonsOfScreenGamePadを追加。

MTMainViewCtrl::initWithNibName:bundle:rendererParam

  • スクリーンゲームパッドの最終ボタン押下時刻と表示状態のメンバ初期化処理を追加。
  • スクリーンゲームパッドのボタンを角丸にする処理を追加。

MTMainViewCtrl::viewWillAppear

  • スクリーンゲームパッドの最終ボタン押下時刻の設定処理を追加。

MTMainViewCtrl::startScene:isMonitor

  • スクリーンゲームパッドオブジェクトの初期化処理とシーンオブジェクトへの登録処理を追加。
  • スクリーンゲームパッドの最終ボタン押下時刻の設定処理を追加。

MTMainViewCtrl::onTapped

  • スクリーンゲームパッドの最終ボタン押下時刻と表示状態の更新処理を追加。

MTMainViewCtrl::hideAllItems

  • スクリーンゲームパッドのボタン非表示処理を追加。

MTMainViewCtrl::updateButtonStatus

  • スクリーンゲームパッドのボタン表示更新処理を追加
  • 既存のボタンは5秒放置すると非表示にしている。スクリーンゲームパッドについては2.5秒放置したら非表示にする。

MTMainViewCtrl:::onScreenGamePad_*

  • スクリーンゲームパッドのボタンイベントハンドラを追加。
  • ボタンごとにTouchDown, TouchCancel, TouchUpInside, TouchUpOutsideイベントを拾う。
  • TouchDownイベント:ボタンを押した状態に遷移したことをスクリーンゲームパッドオブジェクトに設定。
  • TouchCancel, TouchUpInside, TouchUpOutsideイベント:ボタンを離したことをスクリーンゲームパッドオブジェクトに設定。
2022-07-31 00:32 Aktualisiert von: yknk
Kommentar

対策5 シーンクラス

MTScene::SetScreenGamePadCtrl

  • スクリーンゲームパッド制御オブジェクト登録メソッドを追加。

MTScenePianoRoll3D::SetScreenGamePadCtrl

  • スクリーンゲームパッド制御オブジェクト登録メソッドを追加。

MTScenePianoRoll3DLive::SetScreenGamePadCtrl

  • スクリーンゲームパッド制御オブジェクト登録メソッドを追加。

MTScenePianoRollRain::SetScreenGamePadCtrl

  • スクリーンゲームパッド制御オブジェクト登録メソッドを追加。

MTScenePianoRollRainLive::SetScreenGamePadCtrl

  • スクリーンゲームパッド制御オブジェクト登録メソッドを追加。

MTScenePianoRollRing::SetScreenGamePadCtrl

  • スクリーンゲームパッド制御オブジェクト登録メソッドを追加。

MTScenePianoRoll3DLive::SetScreenGamePadCtrl

  • スクリーンゲームパッド制御オブジェクト登録メソッドを追加。
2022-07-31 00:32 Aktualisiert von: yknk
Kommentar

対策6 設定画面制御クラス

MTSettingViewCtrl::numberOfSectionsInTableView

  • コメント修正。

MTSettingViewCtrl::tableView:titleForHeaderInSection

  • セクション名を"Game Controller"から"Controller"に変更。

MTSettingViewCtrl::tableView:numberOfRowsInSection

  • コントローラセクションの項目数を修正。

MTSettingViewCtrl::tableView:cellForRowAtIndexPath

  • コントローラセクションのセル作成メソッドの名称を変更。

MTSettingViewCtrl::makeControllerCellForIndexPath

  • コントローラセクションのセル作成メソッドを追加。
  • makeGameControllerCellForIndexPathは削除。

MTSettingViewCtrl::makeGameControllerCellForIndexPath

  • Gamepadセル作成メソッドを追加。

MTSettingViewCtrl::makeControllerCellForTouchInvertXYAxis

  • Touch: Invert X and Y Axis セル作成メソッドを追加。

MTSettingViewCtrl::tableView:didSelectRowAtIndexPath

  • コントローラセクションのセル選択イベントハンドラの名称を変更。

MTSettingViewCtrl::onSelectControllerCellForIndexPath

  • コントローラセクションのセル選択イベントハンドラを追加。
  • onSelectGameControllerCellForIndexPathは削除。

MTSettingViewCtrl::onSelectControllerCellForGamepad

  • Gamepadセル選択イベントハンドラを追加。

MTSettingViewCtrl::onSelectControllerCellForTouchInvertXYAxis

  • Touch: Invert X and Y Axis セル選択イベントハンドラを追加。
2022-07-31 00:33 Aktualisiert von: yknk
Kommentar

対策7 タッチイベント制御クラス

MTTouchCtrl

  • iPad用の画面端の幅(EDGE_WIDTH_IPAD)を80から60に変更。

スクリーンゲームパッドは画面端に寄せる必要があるため、スワイプ操作枠にボタンを隣り合わせている。 しかしボタン操作によってスワイプ操作枠に誤って触れると、意図しない操作を発生させてしまう。 ユーザのストレスを低減するため、スワイプ操作枠の幅を細くする。 ただしメインビューに配置しているスワイプ操作枠のビットマップ画像の幅は変更しない。 iPadのレイアウト(*.xib)をすべて編集する必要があるため。

2022-07-31 11:10 Aktualisiert von: yknk
  • Status Update from Offen to Geschlossen
  • Lösung Update from Keine to Gefixt

Dateianhangliste

Keine Anhänge

Bearbeiten

Please login to add comment to this ticket » Anmelden