1.経緯
なんとなーくUnity環境を構築したので、せっかくだからアプリを作ってみようと。
2.参考サイト
こちらのサイトさんを参考にさせていただきました。
私の環境では環境構築が完了していたので、#2からですね!
Unity入門 https://dotinstall.com/lessons/basic_unity_v2
3.問題に衝突
途中でちょっとしたタイプミスなどありつつ、
なかなか順調に進んでたんですけど、
最後に問題にぶつかりました!
「アプリに書き出してもタッチ操作に反応しない!」
まぁ薄々そんな気はしてました。
だって、スマホに矢印キーはないもの!!!
4.解決
いろいろなサイトを見て回りました!
結果的に作ったコードは以下の通りです!
(赤色の部分以外は、参考サイトを参照してください)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AppUtil : MonoBehaviour
{
private static Vector3 TouchPosition = Vector3.zero;
/// <summary>
/// タッチ情報を取得(エディタと実機を考慮)
/// </summary>
/// <returns>タッチ情報。タッチされていない場合は null</returns>
public static TouchInfo GetTouch()
{
if (Application.isEditor)
{
if (Input.GetMouseButtonDown(0)) { return TouchInfo.Began; }
if (Input.GetMouseButton(0)) { return TouchInfo.Moved; }
if (Input.GetMouseButtonUp(0)) { return TouchInfo.Ended; }
}
else
{
if (Input.touchCount > 0)
{
return (TouchInfo)((int)Input.GetTouch(0).phase);
}
}
return TouchInfo.None;
}
/// <summary>
/// タッチポジションを取得(エディタと実機を考慮)
/// </summary>
/// <returns>タッチポジション。タッチされていない場合は (0, 0, 0)</returns>
public static Vector3 GetTouchPosition()
{
if (Application.isEditor)
{
TouchInfo touch = AppUtil.GetTouch();
if (touch != TouchInfo.None)
{
return Input.mousePosition;
}
}
else
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
TouchPosition.x = touch.position.x;
TouchPosition.y = touch.position.y;
return TouchPosition;
}
}
return Vector3.zero;
}
/// <summary>
/// タッチワールドポジションを取得(エディタと実機を考慮)
/// </summary>
/// <param name='camera'>カメラ</param>
/// <returns>タッチワールドポジション。タッチされていない場合は (0, 0, 0)</returns>
public static Vector3 GetTouchWorldPosition(Camera camera)
{
Vector3 pos = GetTouchPosition();
pos.z = Mathf.Abs(camera.transform.position.z);
return camera.ScreenToWorldPoint(pos);
}
}
/// <summary>
/// タッチ情報。UnityEngine.TouchPhase に None の情報を追加拡張。
/// </summary>
public enum TouchInfo
{
/// <summary>
/// タッチなし
/// </summary>
None = 99,
// 以下は UnityEngine.TouchPhase の値に対応
/// <summary>
/// タッチ開始
/// </summary>
Began = 0,
/// <summary>
/// タッチ移動
/// </summary>
Moved = 1,
/// <summary>
/// タッチ静止
/// </summary>
Stationary = 2,
/// <summary>
/// タッチ終了
/// </summary>
Ended = 3,
/// <summary>
/// タッチキャンセル
/// </summary>
Canceled = 4,
}
以下、参考にしたサイトです。
UnityでiOS/Android/Editorの共通タッチ処理を実装する https://qiita.com/tempura/items/4a5482ff6247ec8873df
