Unity 手机触摸Touch事件

admin3年前unity基础API1090

1:判断是否触摸

如果大于0那就是最少一个手指触摸了屏幕 以此类推 如果=2就是2个手指 最多10个

if(Input.touchCount >0)



2:判断单个手指是否移动

 if (Input.GetTouch(0).phase==TouchPhase.Moved)


3:手指的几种状态

        // 手指刚触摸到屏幕的时候
	Input.GetTouch(0).phase  == TouchPhase.Began;
	// 手指在屏幕上移动
	Input.GetTouch(0).phase  == TouchPhase.Moved;
	// 手指触摸屏幕,但并未移动
	Input.GetTouch(0).phase  == TouchPhase.Stationary;
	// 手指从屏幕上移开,这是一个触控的最后状态
	Input.GetTouch(0).phase  == TouchPhase.Ended;
	// 系统取消追踪触控。这常发生在用户把屏幕放到脸上或者同时触控超过了5根手指,同样也是触控的最后一个状态
	Input.GetTouch(0).phase  == TouchPhase.Canceled;



4:手机触摸移动的方向


            if (Input.touchCount >0)
            {

            //第一个触摸到手指头 phase状态 Moved滑动

            if (Input.GetTouch(0).phase == TouchPhase.Moved) {
                if (touchPosion == Vector2.zero)
                {

                    touchPosion = Input.GetTouch(0).position;


                }
                else {
                    Vector2 pos = Input.GetTouch(0).position;
                    float x = touchPosion.x - pos.x;
                 
                    if (x < 0)
                    {

                         transform.Rotate(transform.up * -1 * 90 * Time.deltaTime);
                    }
                    if(x >0) {

                         transform.Rotate(transform.up * 1 * 90 * Time.deltaTime);
                    }
                    touchPosion = pos;
                }
         
            }

        }



5:手机触摸后松开移动的方向

   
    //判断手指松开后移动方向
    Vector2 TouchDirection()
    {
       
        Vector2 startFingerPos = new Vector2(0,0); //初始位置
         
        int x = 0;
        int y = 0;
        if (Input.GetTouch(0).phase == TouchPhase.Began )

        {

            Debug.Log("======开始触摸=====");

            startFingerPos = Input.GetTouch(0).position;



        }

        if (Input.GetTouch(0).phase == TouchPhase.Ended)
        {

            Debug.Log("======释放触摸=====");
            //现在手指位置
            Vector2 nowFingerPos = Input.GetTouch(0).position;

            float xMoveDistance = Mathf.Abs(nowFingerPos.x - startFingerPos.x);

            float yMoveDistance = Mathf.Abs(nowFingerPos.y - startFingerPos.y);
            if (xMoveDistance > yMoveDistance)
            {

                if (nowFingerPos.x - startFingerPos.x > 0)
                {

                    //Debug.Log("=======沿着X轴负方向移动=====");

                    x = -1;         //沿着X轴负方向移动

                }

                else

                {

                    //Debug.Log("=======沿着X轴正方向移动=====");

                    x = 1;          //沿着X轴正方向移动

                }

            }
            else

            {

                if (nowFingerPos.y - startFingerPos.y > 0)

                {

                    //Debug.Log("=======沿着Y轴正方向移动=====");

                    y = 1;         //沿着Y轴正方向移动

                }
                else
                {

                    //Debug.Log("=======沿着Y轴负方向移动=====");

                    y = -1;         //沿着Y轴负方向移动

                }

            }
            return new Vector2(x, y);
        }

        return new Vector2(0, 0);
      


    }


相关文章

相机跟随角色移动旋转方法

相机跟随角色移动旋转方法

1:首先做个一个空的节点作为相机的根节点 参数归02:在根节点添加一个节点作为缩放 镜头上下移动 Z 镜头远近 Y 镜头上下3:最后添加真正的镜头对象Camer...

Unity使用input system制作一个摇杆控制物体移动

Unity使用input system制作一个摇杆控制物体移动

1:首先使用UI做个摇杆的模型 两个图片嵌套,外侧是边界,中间图片是摇杆2:使用inputSYSTEM创建事件3:玩家物体上绑定脚本using System.Collections...

Unity移动操作物体

if (Input.touchCount == 1)         {  ...

unity 新的输入系统input system 使用

unity 新的输入系统input system 使用

1:首先在包管理器里安装 搜索"input system"2: 创建input acionts3:生成代码  勾选后点击右小角应用就可以自动生成相关代...

Unity3d KeyCode 键盘各种键值详情

 Backspace     退格键  Delete      De...

Unity 插值运算

在unity3d中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间、两个向量之间、两个浮点数之间、两个颜色之间,其函数原型如下: 1.Material.Lerp&nbs...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。