实现单点和多点触屏操作

1、当把unity游戏运行到IOS或者Android设备上时候,桌面系统中的鼠标左键操作可以自动变为手机屏幕上的触屏操作,但鼠标操作无法实现一些特有的触屏操作,比如多点触屏等,在unity的input类中,除了包括桌面系统的各种输入功能,也包括专门针对手机触屏的各种功能,下面的例子说明了如何实现触屏,多点触屏等,本案例同样适用于iOS平台,不用多谢,个人总结出来的,我是雷锋!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AndroidTouch : MonoBehaviour {
//记录手指触屏的位置。
Vector2 m_screenpos = new Vector2();
//摄像机移动速度
float m_speed = 0.1f;
void Start ()
{
//允许多点触屏
Input.multiTouchEnabled = true;
}
void MobileInput()
{
if (Input .touchCount <=0)
{
return;
}
if (Input.touchCount1)//1个手指触摸屏幕。
{
//开始触屏
if (Input.touches[0].phase
TouchPhase.Began)
{
//记录手指触屏的位置。
m_screenpos = Input.touches[0].position;
}
//手指移动。
else if (Input.touches[0].phaseTouchPhase.Moved)
{
//移动摄像机
Camera.main.transform.Translate(new Vector3(Input.touches[0].deltaPosition.xm_speed,Input.touches[0].deltaPosition.ym_speed,0));
}
//手指离开屏幕
if (Input.touches[0].phase
TouchPhase.Ended&&Input.touches[0].phase!=TouchPhase.Canceled)
{
Vector2 pos = Input.touches[0].position;
//手指水平移动。
if (Mathf.Abs(m_screenpos.x-pos.x)>Mathf.Abs(m_screenpos.y-pos.y))
{
if (m_screenpos.x>pos.x)
{
//手指向左滑动。
}
else
{
//手指向右滑动。
}
}
//手指垂直移动。
else
{
if (m_screenpos.y>pos.y)
{
//手指向下滑动。
}
else
{
//手指偶向上滑动。
}
}
}
}
else if (Input.touchCount>1)
{
//记录2个手指的位置,。
Vector2 finger1 = new Vector2();
Vector2 finger2 = new Vector2();
//记录2个手指的移动距离。
Vector2 moiv1 = new Vector2();
Vector2 mov2 = new Vector2();
for (int i = 0; i < 2; i++)
{
//获得手指1和2的触控信息。
Touch touch = Input.touches[i];
if (touch .phaseTouchPhase.Ended)
{
break;
}
//如果手指处于移动状态。
if (touch.phase
TouchPhase.Moved)
{
float mov = 0;
if (i==0)
{
//获得手指1的位置和移动。
finger1 = touch.position;
moiv1 = touch.deltaPosition;
}
else
{
//获得手指2的位置和移动。
finger2 = touch.position;
mov2 = touch.deltaPosition;
//获得手指移动距离。
if (finger1.x>finger2.x)
{
mov = moiv1.x;
}
else
{
mov = mov2.x;
}
if (finger1.y>finger2.y)
{
mov += moiv1.y;
}
else
{
mov += mov2.y;
}
//根据手指移动距离改变摄像机的位置。,
Camera.main.transform.Translate(0,0,mov*m_speed);
}
}
}
}
}

void Update () {
    if (Input.GetKeyUp(KeyCode.Escape))
    {
        Application.Quit();
    }

#if !UNITY_EDITOR && (UNITY_iOS || UNITY_ANDROID)
MobileInput();
#else

#endif
}

private void DesktopInput()
{
    //记录鼠标左键的 移动距离。
    float mx = Input.GetAxis("Mouse X");
    float my = Input.GetAxis("Mouse Y");
    if (mx!=0|my!=0)
    {
        //鼠标左键。
        if (Input.GetMouseButtonDown(0))
        {
            Camera.main.transform.Translate(new Vector3 (mx,my,0));
        }
    }
}

}

你可能感兴趣的:(实现单点和多点触屏操作)