いんでぃーづ

ゲームいろいろ、いろいろ自由

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.


免責事項

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

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

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