/// <summary> /// タッチ入力情報をGestureInfoへ変換します /// </summary> /// <returns>入力情報があればtrueを返します</returns> bool InputForTouch(ref GestureInfo info) { Touch?touch = GetTouch(); if (!touch.HasValue) { return(false); } info.ScreenPosition = touch.GetValueOrDefault().position; info.DeltaPosition = touch.GetValueOrDefault().deltaPosition; switch (touch.GetValueOrDefault().phase) { case TouchPhase.Began: info.IsDown = true; break; case TouchPhase.Moved: case TouchPhase.Stationary: info.IsDrag = true; break; case TouchPhase.Ended: case TouchPhase.Canceled: info.IsUp = true; gestureInfo.TouchId = -1; break; } return(true); }
/// <summary> /// ドラッグジェスチャー処理を行います /// </summary> void DoDrag(GestureInfo info) { if (this.processingGesture == null) { return; } AddTracePosition(info.ScreenPosition); info.DeltaTime = IsTrace ? GetTraceDeltaTime() : info.DeltaTime + Time.deltaTime; info.DragDistance = IsTrace ? GetTraceVector(0, 0) : info.DragDistance + GetTraceVector(0, 0); info.DragDirection = IsTrace ? GetTraceVector(info.StartPosition, 0) : info.DragDistance + GetTraceVector(info.StartPosition, 0); this.processingGesture.OnGestureDrag(info); }
/// <summary> /// ジェスチャー開始処理を行います /// </summary> void DoDown(GestureInfo info) { this.processingGesture = gestures.Find(ges => ges.IsGestureProcess(info)); if (this.processingGesture == null) { return; } ClearTracePosition(); info.DeltaTime = 0; info.DragDistance = new Vector3(); info.StartPosition = info.ScreenPosition; this.processingGesture.OnGestureDown(info); }
public void OnGestureDown(GestureInfo info) { Vector3 aTapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); Collider2D aCollider2d = Physics2D.OverlapPoint(aTapPoint); if (aCollider2d) { GameObject obj = aCollider2d.transform.gameObject; Debug.Log(obj.name); NPC npc = obj.GetComponent <NPC>(); if (npc != null) { npc.OnTap(); } messagemanager.OnTap(); } }
/// <summary> /// マウス入力情報をGestureInfoへ変換します /// </summary> /// <returns>入力情報があればtrueを返します</returns> bool InputForMouse(ref GestureInfo info) { if (Input.GetMouseButtonDown(0)) { info.IsDown = true; info.DeltaPosition = new Vector3(); info.ScreenPosition = Input.mousePosition; } if (Input.GetMouseButtonUp(0)) { info.IsUp = true; info.DeltaPosition = Input.mousePosition - info.ScreenPosition; info.ScreenPosition = Input.mousePosition; } if (Input.GetMouseButton(0)) { info.IsDrag = true; info.DeltaPosition = Input.mousePosition - info.ScreenPosition; info.ScreenPosition = Input.mousePosition; } return(true); }
/// <summary> /// ジェスチャー終了処理を行います /// </summary> void DoUp(GestureInfo info) { if (this.processingGesture == null) { return; } info.DeltaTime = IsTrace ? GetTraceDeltaTime() : info.DeltaTime + Time.deltaTime; info.DragDistance = IsTrace ? GetTraceVector(0, 0) : info.DragDistance + GetTraceVector(0, 0); this.processingGesture.OnGestureUp(info); // フリックジェスチャー判定 var v1 = GetTraceVector(0, 0); var v2 = GetTraceVector(this.tracePositionQueue.Count - 5, 0); var dot = Vector3.Dot(v1.normalized, v2.normalized); if (dot > 0.9) { this.processingGesture.OnGestureFlick(info); } this.processingGesture = null; }
public void OnGestureFlick(GestureInfo info) { }
public void OnGestureDrag(GestureInfo info) { Player pl = player.GetComponent <Player>(); pl.Move(info.DragDirection); }
public void OnGestureUp(GestureInfo info) { Player pl = player.GetComponent <Player>(); pl.Move(MoveDirection.none); }
public bool IsGestureProcess(GestureInfo info) { return(true); }