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