Unity 手指触摸的方向(单手)

最近写了一个跑酷游戏,总结下里面的知识点:O(∩_∩)O~

using UnityEngine;
using System.Collections;




public class Demo : MonoBehaviour
{
    public Vector3 lastMonseDown;

    /// <summary>
    /// 判断手指触摸的方向
    /// </summary>
    /// <returns></returns>
    TouchDir GetTouchDir()
    {
        //记录第一次手指点击的坐标点
        if (Input.GetMouseButtonDown(0))
        {
            lastMonseDown = Input.mousePosition;
        }


        //UICamera.hoveredObject防止NGUI点击穿透问题
        if (Input.GetMouseButtonUp(0) && UICamera.hoveredObject == null)
        {
            //结束坐标-开始坐标
            Vector3 mouseUp = Input.mousePosition;
            Vector3 touchOffset = mouseUp - lastMonseDown;

            //滑动超过50像素,算一次正确的滑动
            if (Mathf.Abs(touchOffset.x) > 50 || Mathf.Abs(touchOffset.y) > 50)
            {
                if (Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && touchOffset.x > 0)
                {
                    return TouchDir.Right;
                }
                else if (Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && touchOffset.x < 0)
                {
                    return TouchDir.Left;
                }
                else if (Mathf.Abs(touchOffset.x) < Mathf.Abs(touchOffset.y) && touchOffset.y > 0)
                {

                    return TouchDir.Top;
                }
                else if (Mathf.Abs(touchOffset.x) < Mathf.Abs(touchOffset.y) && touchOffset.y < 0)
                {

                    return TouchDir.Bottom;
                }
            }
            else
            {
                return TouchDir.None;
            }
        }

        return TouchDir.None;
    }


}


/// <summary>
/// 触摸的方向
/// </summary>
public enum TouchDir
{
    None,
    Left,
    Right,
    Top,
    Bottom
}
posted @ 2015-01-04 21:30  盘子脸  阅读(1020)  评论(0编辑  收藏  举报