はじめに
モバイルのゲームを作る場合、Joystickは避けて通れないといっても過言ではないでしょう。
私も今回作っているゲームに組み込もうと思いどう実装しようか悩んでいたところ、このようなアセットを見つけました。
このアセットを用いて以下のGIFのようなJoystickを作ってみようと思います。

(一応作成中の未公開ゲームの一部なのでこの記事をみた方だけの秘密です)
Canvasの作成
まずはCanvasを新規作成します。

Canvasの設定は好きにしてもらって大丈夫ですが、個人的にScreen Space - Cameraにしておいた方が良いと思います。

Joystickの作成
JoystickのゲームオブジェクトがJoystick Pack -> Prefabsの中に入っています。
Joystickには4種類あり,以下のようなものになりますが今回はFloating Joystickを選択しました。
| 名前 | 意味 |
|---|---|
| Fixed | 固定された位置に置く |
| Floating | ユーザーがタッチした位置から始まり、タッチを離すまで固定される |
| Dynamic | ユーザーがタッチした位置から始まり、タッチにゆっくりと追従していく |
| Variable | 3つのモードに動的に変更できる |
Joystick Pack/Prefabs/FloatingJoystickを先ほど作成したCanvasの中に入れてください。

反映させる範囲を指定する
画面左側のみタッチしたら表示されるようにしたいので、その範囲を設定します。
といってもFloating Joystickゲームオブジェクトの大きさがそのままタッチ範囲となっているので、真ん中から左に伸びるような設定に変更すればOKです。
以下の画像を参考にしながら設定してみてください。

入力を取得する
最後にスクリプトからJoystickの入力を受け取りましょう。
[SerializeField] private FloatingJoystick _joystick; private void Update() { // -1 ~ 1までの値を取得する float x = _joystick.Horizontal; float y = _joystick.Vertical; // 方向を取得することも Vector2 dir = _joystick.Direction; }
さいごに
こんなに簡単にジョイスティックを実装できるなんてアセット様々ですよね。
このアセットのサイズ自体も大きくなかったはずなので、自分で一から実装してみるといった場合以外は積極的に使っていくのもアリだと思います。
是非うまく活用してみてください。
ではまた。