任务单 #45282

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

开放日期: 2022-07-31 00:10 最后更新: 2022-07-31 11:10

报告人:
属主:
状态:
关闭
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:

Details

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

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

任务单历史 (3/10 Histories)

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

仕様

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

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

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

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

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

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

設定画面

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

対策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 Updated by: yknk
评论

対策2 パラメータ定義

MTParam.h

  • フォーマット文字列 MT_CONF_CATEGORY_CONTROLLER の定義を追加。
  • フォーマット文字列 MT_CONF_SECTION_TOUCH の定義を追加。
2022-07-31 00:32 Updated by: yknk
评论

対策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 Updated by: yknk
评论

対策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 Updated by: yknk
评论

対策5 シーンクラス

MTScene::SetScreenGamePadCtrl

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

MTScenePianoRoll3D::SetScreenGamePadCtrl

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

MTScenePianoRoll3DLive::SetScreenGamePadCtrl

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

MTScenePianoRollRain::SetScreenGamePadCtrl

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

MTScenePianoRollRainLive::SetScreenGamePadCtrl

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

MTScenePianoRollRing::SetScreenGamePadCtrl

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

MTScenePianoRoll3DLive::SetScreenGamePadCtrl

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

対策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 Updated by: yknk
评论

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

MTTouchCtrl

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

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

2022-07-31 11:10 Updated by: yknk
  • 状态 Update from 开启 to 关闭
  • 处理结果 Update from to Fixed

Attachment File List

No attachments

编辑

Please login to add comment to this ticket » 登录名