スマホタッチパネルをJoyStickのような入力にする

2023年10月19日

タッチパネルを使ったJoyStickを実装したい時にアセットストアから無料のJoystickPackを使うと簡単にできます

サンプルに使うプロジェクト

もちろんゼロからでもできますが、今回は。JoyStickの練習で使ったプロジェクトの続きとして実装しましょう

アセット

プロジェクトを起動したら、アセットストアからインポートしましょう

インポートファイル

シーンの構成

前回作成したスクリプトの変更

スマホ用にメソッドを分けます

using UnityEngine;
using UnityEngine.Events;

public class InputController : MonoBehaviour
{
    public UnityEvent<Vector2> inputEvent;

    public Joystick joyStick;

    void Update()
    {
        // PC用
        //   StickInput();

        // スマホ用
        SmaartPhoneInput();
    }

    void StickInput()
    {
        float x = Input.GetAxis("Horizontal");
        float y = Input.GetAxis("Vertical");

        Vector2 position = new Vector2(x, y);

        inputEvent.Invoke(position);
    }

    void SmaartPhoneInput()
    {
        float x = joyStick.Horizontal;
        float y = joyStick.Vertical;

        Vector2 position = new Vector2(x, y);

        inputEvent.Invoke(position);
    }
}

固定JoyStick

FixedJoystick ゲームオブジェクト

JoyStickは移動しません

今回は、左下に固定されるようにしました
UIの設定は次のキャプチャーを参考にしてください

Handle子オブジェクト

これは大きさだけ変更します

InputControllerの選択JoyStickにアウトレット接続

実行結果

固定JoyStickのいろいろな設定

Handle Range

ハンドル(ノブの部分)の動かせる範囲

Dead Zone

ハンドルを少しだけ動かしても0のままの範囲

Axis Options

軸の選択になります

SnapX SnapY

じわじわ入力されず、いきなり-1,+1に飛びます
右上の十字表示を確認してください

その他のJoyStick

ダイナミック JoyStick

ハンドルをドラッグしながら自由に動かすことができます

フローティング JoyStick

ダイナミックのようにクリックした場所にJoyStickが現れますが、ドラッグして移動しても、最初の場所からは移動しません

変更可能なJoyStick

上記の設定をインスペクターから変更できるような、まとめたJoyStickになります

参考

マニュアル(英語)

マニュアル(翻訳)

Unity,アセット

Posted by hidepon