はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】Joystickをアセットパワーで楽々実装する

はじめに

モバイルのゲームを作る場合、Joystickは避けて通れないといっても過言ではないでしょう。

私も今回作っているゲームに組み込もうと思いどう実装しようか悩んでいたところ、このようなアセットを見つけました。

このアセットを用いて以下のGIFのようなJoystickを作ってみようと思います。

f:id:hanaaaaaachiru:20200606014400g:plain
(一応作成中の未公開ゲームの一部なのでこの記事をみた方だけの秘密です)

Canvasの作成

まずはCanvasを新規作成します。
f:id:hanaaaaaachiru:20200605231206p:plain

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

f:id:hanaaaaaachiru:20200605231416p:plain

Joystickの作成

JoystickのゲームオブジェクトがJoystick Pack -> Prefabsの中に入っています。

Joystickには4種類あり,以下のようなものになりますが今回はFloating Joystickを選択しました。

名前 意味
Fixed 固定された位置に置く
Floating ユーザーがタッチした位置から始まり、タッチを離すまで固定される
Dynamic ユーザーがタッチした位置から始まり、タッチにゆっくりと追従していく
Variable 3つのモードに動的に変更できる

Joystick Pack/Prefabs/FloatingJoystickを先ほど作成したCanvasの中に入れてください。

f:id:hanaaaaaachiru:20200605233000p:plain

反映させる範囲を指定する

画面左側のみタッチしたら表示されるようにしたいので、その範囲を設定します。

といってもFloating Joystickゲームオブジェクトの大きさがそのままタッチ範囲となっているので、真ん中から左に伸びるような設定に変更すればOKです。

以下の画像を参考にしながら設定してみてください。
f:id:hanaaaaaachiru:20200605234440p:plain

入力を取得する

最後にスクリプトからJoystickの入力を受け取りましょう。

[SerializeField] private FloatingJoystick _joystick;

private void Update()
{
    // -1 ~ 1までの値を取得する
    float x = _joystick.Horizontal;
    float y = _joystick.Vertical;

    // 方向を取得することも
    Vector2 dir = _joystick.Direction;
}

さいごに

こんなに簡単にジョイスティックを実装できるなんてアセット様々ですよね。

このアセットのサイズ自体も大きくなかったはずなので、自分で一から実装してみるといった場合以外は積極的に使っていくのもアリだと思います。

是非うまく活用してみてください。

ではまた。