任务单 #39277

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

开放日期: 2019-06-01 22:08 最后更新: 2019-06-03 23:47

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

Details

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

参考チケット

  • #39085 iOS版 ゲームコントローラー対応
  • #39275 Win版 ゲームコントローラー対応

任务单历史 (3/10 Histories)

2019-06-01 22:08 Updated by: yknk
  • New Ticket "macOS版 ゲームコントローラー対応" created
2019-06-01 22:10 Updated by: yknk
  • Details Updated
2019-06-02 00:59 Updated by: yknk
评论

仕様

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

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

メイン画面

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

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

設定画面

設定画面は用意しない。

備考

iOS版では、L1/R1ショルダーボタンを再生速度に割り当てていたが、macOS版では視点切り替えに変更した。 macOS版はVRビューを持たないため、視点切り替えの方が有用であると判断したため。

2019-06-02 00:59 Updated by: yknk
评论

対策1:ゲームパッド制御クラスの追加

MTGamePadCtrl

ゲームパッド制御クラスを新規追加。

2019-06-02 00:59 Updated by: yknk
评论

対策2:OpenGLユーティリティ修正

OGLH::ToDegree

ラジアンから角度への変換メソッドを追加。 円周率OGL_MATH_PIの定義場所を.mmから.hに変更。

GLRenderer::ResetViewPort

ビューポートリセットメソッドを追加。

2019-06-02 00:59 Updated by: yknk
评论

対策3:メインビュークラスの修正

MTMainView

メンバにゲームパッド制御オブジェクト(m_GamePadCtrl)とゲームパッド用視点番号(m_GamePadViewPointNo)を追加。

MTMainView::initialize

ゲームパッド制御オブジェクトの初期化処理を追加。 ゲームパッド用視点番号の初期化処理を追加。 ゲームコントローラー接続/切断通知先登録処理を追加。

MTMainView::startScene

ゲームコントローラー初期化メソッド呼び出し処理を追加。

MTMainView::scene_OnGameControllerChanged

ゲームコントローラー更新イベント通知メソッドを追加。

MTMainView::thread_ExecSceneMsg

ゲームコントローラー更新イベント受け取り時の処理を追加。

MTMainView::onGameControllerDidConnect

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

MTMainView::onGameControllerDidDisconnect

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

MTMainView::initializeGameController

ゲームコントローラー初期化メソッドを追加。 ゲームパッド制御オブジェクトの初期化と、ボタン押下時のイベントハンドラを登録。

MTMainView::changeViewPoint

ゲームパッド用の視点切り替えメソッドを追加。

2019-06-02 00:59 Updated by: yknk
评论

対策4:シーンクラス修正

MTScene::OnGameControllerChanged

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

MTSceneMsgOnGameControllerChanged

ゲームコントローラー更新メッセージクラスを追加。

MTScenePianoRoll3D::OnGameControllerChanged

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

2019-06-02 01:00 Updated by: yknk
评论

対策5:一人称カメラクラス修正

MTFirstPersonCam

一人称カメラクラスのメンバにゲームパッド制御オブジェクトm_GamePadCtrlを追加。

MTFirstPersonCam::MTFirstPersonCam

コンストラクタの初期化処理をグループごとにまとめ直した。処理の修正なし。

MTFirstPersonCam::Initialize

ゲームパッド制御オブジェクトの初期化処理を追加。

MTFirstPersonCam::Transform

ゲームパッドの右スティックの状態を取得して視線方向に反映する処理を追加。

MTFirstPersonCam::_TransformCamPosition

ゲームパッドの十字キー、左スティック、X/Yボタンの状態を取得して、カメラ位置に反映する処理を追加。

MTFirstPersonCam::OnGameControllerChanged

ゲームコントローラー更新メソッドを追加。 ゲームコントローラーの接続/切断が発生したときに教えてもらうために用意したもの。

2019-06-02 01:00 Updated by: yknk
评论

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

Targets / MIDITrail

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

2019-06-03 23:47 Updated by: yknk
  • 处理结果 Update from to Fixed
  • 状态 Update from 开启 to 关闭

Attachment File List

No attachments

编辑

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