Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        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();
            }
        }
Beispiel #5
0
 /// <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);
 }
Beispiel #6
0
        /// <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;
        }
Beispiel #7
0
 public void OnGestureFlick(GestureInfo info)
 {
 }
Beispiel #8
0
        public void OnGestureDrag(GestureInfo info)
        {
            Player pl = player.GetComponent <Player>();

            pl.Move(info.DragDirection);
        }
Beispiel #9
0
        public void OnGestureUp(GestureInfo info)
        {
            Player pl = player.GetComponent <Player>();

            pl.Move(MoveDirection.none);
        }
Beispiel #10
0
 public bool IsGestureProcess(GestureInfo info)
 {
     return(true);
 }