いんでぃーづ

ゲームメインのブレブレブログ。ゲーム,Unity,デザイン,UI/UX

SteamAPIで接続しているコントローラ用のボタン画像をスプライトで表示する

{スポンサーリンク}

SteamInputゲームパッド対応した際の発展系として、コントローラのボタンの画像(グリフ)をAPIで取得できる。

このとき取得するボタンは アクション 単位での取得になるため、
「"ジャンプ" アクションのボタン画像を取得」というコードを書けば、コントローラの種類や割り当てられているボタンの種類を気にすることなく、"ジャンプ" ボタンに割り当てられている画像を取得できる。

Xboxコントローラ

PS4コントローラ

上記二枚の画像は同じコードでの実行結果。
何のコントローラが接続されているかは気にする必要がない。

SteamInput に対応する

過去記事参照

indie-du.com

アクションハンドラを取得する

vdfファイルに定義したアクションのうち、取得したいアクションのハンドラを取得する。

// コントローラのハンドラを取得
InputHandle_t[] controllerHandles;
int controllerCount = SteamInput.GetConnectedControllers( controllerHandles );

if (controllerCount > 0) {
    // とりあえず0番目使っとけ的なアレ
    InputHandle_t ControllerHandler = controllerHandles[0];

    // アクションセットハンドラを取得
    InputActionSetHandle_t  ActionSetHandle = SteamInput.GetActionSetHandle("アクションセット名");

    // Jumpアクションのハンドラを取得
    string action ="Jump";  // 対象アクション名
    InputDigitalActionHandle_t ActionHandle = SteamInput.GetDigitalActionHandle(action);

グリフファイルへのパスを取得する

ボタン画像ファイルはPCの中に保存されているので、そこへのパスを取得する。

EInputActionOrigin[] origins = new EInputActionOrigin[ Constants.STEAM_CONTROLLER_MAX_ORIGINS ];

int count =SteamInput.GetDigitalActionOrigins(ControllerHandler, ActionSetHandle, ActionHandle, origins);
if (count > 0) {
    // とりあえず0番目とっとけ的なアレ
    string actionGlyphPath = SteamInput.GetGlyphForActionOrigin(origins[0]);

画像を取得してスプライトに変換する

下記Quiitaにすばらしくまとまっています。2年以上前の記事ですが普通にうごきました。

qiita.com


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


Amazon.co.jpアソシエイト


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。