2025年3月18日火曜日

【Unity 2D】Joystick Pack リファレンスと利用例

簡単にバーチャルパッドを設置できるアセット「Joystick Pack」のうち、画面に固定のパッドを設置する「Fixed Joystick」についての解説です。

利用例: スターリーキャプターのゲーム画面

リファレンス

スクリプト上で使用するプロパティ

プロパティ名説明
Horizontalfloatスティックの横方向の傾きの値を格納
-1f〜1fの範囲
Verticalfloatスティックの縦方向の傾きの値を格納
-1f〜1fの範囲
DirectionVector2Horizontal,Vectorの値を持つVector2型のデータ

インスペクター上に表示されるプロパティ

プロパティ名説明
Handle Rangefloatハンドルの可動域
Dead Zonefloat反応させない部分
例えば0.5とすると、スティックを半分傾けても反応しなくなる
Axis Options選択Both,Horizontal,Verticalの3択
Horizontalだと横方向にだけ移動、Verticalだと縦方向にだけ移動
Snap XboolHorizontalの値が0か1のどちらかになる
Snap YboolVerticalの値が0か1のどちらかになる

Axis Options 補足

Horizontalの場合Verticalの場合

Snap X, Snap Y 補足

スティックを傾けて0か1かしか値が出力されないので、十字キーのような使い方が想定される。

利用例

記事冒頭のアニメーションのように、Joystick Packが出力するx方向、y方向の値を利用して、オブジェクトを移動させることができます。

オブジェクトを移動させる処理自体は、別の仕組みを利用します。Rigidbody2Dが提供する物理演算を利用する方法や、transform.positionで座標位置を指定する方法があります。

ソースコード(コメントにて解説)

// Joystick 設置方法
// 1. アセットストアから「Joystick Pack」を入手
// 2. プロジェクトに「Joystick Pack」をインポート
// 3. アセットインポートで追加されたプレハブ「Fixed Joystick」をCanvasに設置

public class Majo : MonoBehaviour
{
    // Inspector に Joystick を登録できるようにする
    [SerializeField] Joystick joystick;
    
    // 物理演算を利用してオブジェクトを動かす
    private Rigidbody2D rigidBody2D;
    
    void Start()
    {
        rigidBody2D = GetComponent<Rigidbody2D>();
    }

    // FixedUpdate: Unityの物理演算独自の更新タイミング(0.02秒間隔 = 50FPS)
    void FixedUpdate()
    {
        // スティックの横方向の傾きの値を格納 -1f〜1fの範囲
        float directionX = joystick.Horizontal;

        // スティックの盾方向の傾きの値を格納 -1f〜1fの範囲
        float directionY = joystick.Vertical;

        // 物理演算を利用してオブジェクトを動かす
        var forceDirection = new Vector2( directionX, directionY );
        float force = 10f;
        rigidBody2D.AddForce( forceDirection * force );
    }
}

0 件のコメント:

コメントを投稿

【注目記事】

ゲーム用ドット絵の配色は「LOSPEC」で解決!