キーボードで移動させるサンプルは多いんですが、マウスやタッチ操作で移動させる方法が出てこない。と思って探したらいいアセットがありました。
「JOYSTICK PACK」というアセットを使用する事でバーチャルパッドを追加出来るのですが、透明にすることが出来ますので邪魔にならずプレイヤーを移動させることが出来ます。利用方法も簡単で約4工程で利用することができます。
こんな感じでマウスで動かせるものを作ります。
1.アセットをインポートする
地面とプレイヤーオブジェクトを用意して、メニューの「Window」→「Asset Store」を開き「JOYSTICK PACK」を検索してインポートします。
2.パッドの透明度を調整する
Hierarchyの「Create」→「UI」→「Canvas」でCanvasを作成して、インポートした「Joystick Pack」→「Prefabs」→「Floating Joystick」をCanvasに追加します。
Hierarchyに追加された「Floating Joystick」の下にある「Background」を選択し、Inspectorのカラーをクリックしてカラーパネルを開き、透明度を0にします。
同様に「Background」の下にある「Handle」の透明度も0にします。
見えなくなりますので気にしなくて大丈夫ですが、サイズや位置が気になる場合はBackgroundの位置とサイズ、Handleのサイズを変えてみてください。
3.スクリプトを追加する
PlayerオブジェクトにRigidbodyとPlayerというスクリプトを追加します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed = 20.0f;
public FloatingJoystick joystick;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
var power = new Vector3(joystick.Horizontal, 0, joystick.Vertical);
rb.AddForce(power * speed);
}
}
4.プレイヤーと紐付ける
PlayerオブジェクトにつけたPlayerスクリプトの「Joystick」に「Floating Joystick」を追加します。
再生して確認する
プレイボタンを押して画面上でドラッグするとPlayerが動きます。
アセットに気付かず自分で作ろうとして物凄く時間を消費してしまいました…。