小功能丨Unity调用Android常用事件

版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/weixin_38239050/article/details/82351558
using UnityEngine;

public class AndroidTouch : MonoBehaviour
{
    private void Update()
    {
        #region 手指按下、手指移动、手指松开
        //手指按下
        if (Input.touchCount == 1)
        {
            if (Input.touches[0].phase == TouchPhase.Began)
            {
                // 手指按下时,要触发的代码
            }
        }


        //手指在屏幕上滑动
        if (Input.touchCount == 1)
        {
            if (Input.touches[0].phase == TouchPhase.Moved)
            {
                // 手指滑动时,要触发的代码 
                float s01 = Input.GetAxis("Mouse X");    //手指水平移动的距离
                float s02 = Input.GetAxis("Mouse Y");    //手指垂直移动的距离
            }
        }

        //手指在屏幕上松开时   下面两个判断只能写一个,否则按下后会不停执行其中内容
        if (Input.touches[0].phase == TouchPhase.Ended || Input.touches[0].phase != TouchPhase.Canceled)
        {

        }
        #endregion


        #region 多手指触发事件
        if (Input.touchCount == 2)   //代表有两个手指
        {
            //  第一个手指                                     第二个手指
            if (Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved)
            {
                Vector3 s1 = Input.GetTouch(0).position;         //第一个手指屏幕坐标
                Vector3 s2 = Input.GetTouch(1).position;         //第二个手指屏幕坐标

                float olddis = 0;
                float newdis = Vector2.Distance(s1, s2);
                if (newdis > olddis)             //手势外拉
                {

                }
                if (newdis < olddis)            //手勢內拉
                {

                }
                olddis = newdis;
            }
        }
        #endregion
    }
//总结:
//1.不管是触屏事件还是PC端的事件,世界转屏幕还是屏幕转世界以及射线检测都是管用的
//2.安卓端的手指坐标(Input.touches[0].position)等同于PC端的鼠标屏幕坐标(Input.mousePosition)
}
// 手指刚触摸到屏幕的时候
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;

猜你喜欢

转载自blog.csdn.net/weixin_38239050/article/details/82351558