2Dでスワイプ(フリック)を取得する方法
Rayを使って、最初と最後の入力の位置を獲得して、自分でRayを定義してあげる。
(スワイプの取得方法で、他にいい方法があれば教えて欲しいです。)
using UnityEngine; using System.Collections; using UnityEngine.UI; public class FlickManager : MonoBehaviour { public float distance; public Vector2 UnitVector; public float Flick; public float angle; public float UnitVectorSignY; public static FlickManager instance = null; void Awake () { if(instance == null){ instance = null; } } void Start () { } void Update () { if(Input.GetMouseButtonDown(0)){ HitFirst(); } if(Input.GetMouseButton(0)){ HitLast(); } if(Input.GetMouseButtonUp(0)){ // 距離 distance = Vector2.Distance(hitPoint2, hitPoint1); // ベクトル UnitVector = (hitPoint2-hitPoint1).normalized; // ベクトルのy方向の正負 UnitVectorSignY = Mathf.Sign(UnitVector.y); // ベクトルの角度 angle =Vector2.Angle(new Vector2(0,1),UnitVector); // print("distance = " +distance); // print(" UnitVector = " + UnitVector); // print("y = " + UnitVectorSignY); // print("Angle = " +angle); // フリックかどうかを判定する。 // 大きさが1以上で、ベクトルがy軸に対して30度未満のものをフリック入力として受け取る。 if(distance > 1f){ if(UnitVectorSignY == 1){ if(angle < 30){ // Bandit Flick = 1f; print("Flick" +Flick); } } if(UnitVectorSignY == -1f){ if(angle > 150){ // Hostage Flick = -1f; print("Flick" +Flick); } } }else{ // Empty Flick = 0; print("Flick" +Flick); } } } // 最初の位置を得る。 Vector2 hitPoint1; RaycastHit2D hit1; void HitFirst(){ // if(PlayerPrefs.GetInt("play") == 1){ Vector2 worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D hit1 = Physics2D.Raycast(worldPoint,Vector2.zero); if(hit1){ if( hit1.transform.gameObject.layer == 8){ Bounds rect = hit1.collider.bounds; if(rect.Contains(worldPoint)){ hitPoint1= hit1.point; } } else{ return; } } // } } // 最後の位置を得る。 Vector2 hitPoint2; RaycastHit2D hit2; void HitLast(){ // if(PlayerPrefs.GetInt("play") == 1){ Vector2 worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); hit2 = Physics2D.Raycast(worldPoint,Vector2.zero); if(hit2){ Bounds rect = hit2.collider.bounds; if(rect.Contains(worldPoint)){ if( hit2.transform.gameObject.layer == 8){ hitPoint2= hit2.point; }else{ return; } } } // } } }