画面タッチを検出してオブジェクトを動かす(モバイル)|Unityゲーム制作

Unityの2Dゲームでゲーム画面をタッチしてオブジェクトを動かすのを実装してみます。モバイルゲームのタッチを検出するイメージですね。

はじめに

Unityのバージョンは「2021.3.14f1」で作成しています。ゲーム画面をタッチしてプレイヤー(オブジェクト)を動かしてみます。モバイルゲームでタッチを検出するイメージです。

実装開始

「2DObject」→「Sprites」→「Square」を追加します。

下記スクリプトを作成します。マウスの左クリックした位置が右側なら右に動かして、左側なら左に動かしています。

using UnityEngine;

public class MobileTouch : MonoBehaviour
{
    [SerializeField] private float Speed;

    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

            if (mousePos.x > 0)
            {
                transform.Translate(Speed * Time.deltaTime, 0, 0);
            }
            else
            {
                transform.Translate(-Speed * Time.deltaTime, 0, 0);
            }
        }
    }
}

スクリプトを追加して、パラメータをセットします。

実行すると下記のような感じになります。

このままでもモバイルのタッチを検出できますが、もっとモバイルっぽくスクリプトを変更します。

using UnityEngine;

public class MobileTouch : MonoBehaviour
{
    [SerializeField] private float Speed;

    void Update()
    {
        if (Input.touchCount > 0)
        {
            Touch touch = Input.GetTouch(0);
            Vector3 touchPos = Camera.main.ScreenToWorldPoint(touch.position);

            if (touchPos.x > 0)
            {
                transform.Translate(Speed * Time.deltaTime, 0, 0);
            }
            else
            {
                transform.Translate(-Speed * Time.deltaTime, 0, 0);
            }
        }
    }
}

Inputを利用してタッチを検出しています。公式リファレンスは下記。「Input.GetTouch(0)」は初めにタッチしたのを検出しています。

試しに実行する時は「Simulator」からモバイルを選んで実行すると動作確認ができます。

InputSystemを利用した実装方法もあるので、機会があればそちらも書きたいです。とりあえずは簡単なタッチの検出方法という感じ。

タイトルとURLをコピーしました