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 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.phaseTouchPhase.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));
}
}
}
}