实现单点和多点触屏操作

news/2025/2/21 4:23:41/

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

}


http://www.ppmy.cn/news/484984.html

相关文章

多点触摸:MultiPointTouchArea

MultiPointTouchArea minimumTouchPoints: 多点触摸数量的最小值 maximumTouchPoints: 最大值 touchPoints:数组,存储自定义ID,每个ID将会是一个触摸点,外部使用ID访问此触摸的状态:按下抬起、XY等等属性 代码:每次触摸触发对应的粒子特效,粒子发射坐标为触摸点的坐标 Multi…

windows 7多点触摸开发

win7 触摸屏系统应用广泛&#xff0c;软件操作方便&#xff0c;功能强大&#xff0c;现以被许多硬件厂商应用。 我曾用一台装有win7 的汉王平板电脑进行了多点触摸软件的开发。 开发环境及条件&#xff1a; 1. 平板电脑 win7触摸系统 2. 编译平台 win7vs2010 。&#xff08;我…

什么是多点触摸?

传统的触控屏幕一次只能判断一个触控点&#xff0c;若同时有两个以上的点被触碰&#xff0c;就不能做出正确反应&#xff0c;或者说反应混乱了。多重触控的任务可以分解为两个方面的工作&#xff0c;一是同时采集多点信号&#xff0c;二是对每路信号的意义进行判断&#xff0c;…

什么是多点触摸屏

定义&#xff1a;区别于传统的单点触摸屏 ,多点触摸屏的最大特点在于可以两只手,多个手指,甚至多个人,同时操作屏幕的内容,更加方便与人性化.多点触摸技术也叫多点触控技术. 应用&#xff1a;多点触控在实际应用中被分为两个层面&#xff1a; 其一、是主控芯片能够同时采集多点…

多点触摸方案和IC

惠拓多点触摸屏开发者指南&#xff1a; http://www.hitouchpc.com/Upload/Software/%E6%83%A0%E6%8B%93%E5%A4%9A%E7%82%B9%E8%A7%A6%E6%91%B8%E5%B1%8F%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.pdf CSDN论坛讨论&#xff0c;USB外接触摸屏的windows7的方案 帖子地址&#xf…

【iphone】处理多点触控

【iphone】处理多点触控 &#xff08;转自&#xff1a;http://miaoshuanghe.blog.163.com/blog/static/14013047620107100457798/&#xff09; UIView 继承的 UIResponder (负责UI事件处理) 类中提供了四个方法处理多点触控&#xff1a; - (void )touchesBegan:(NSSet *)touc…

Android中的多点触摸

我的学习视频地址,一起来学习Android… http://edu.csdn.net/course/detail/2741/43164?auto_start1> 代码下载地址 代码一&#xff1a;自定义支持多点触摸的TextView http://download.csdn.net/detail/zhiyuan0932/9513852 什么是多点触摸 允许计算机用户同时通过多个…

STM32模拟USB多点触控屏

STM32模拟USB多点触控屏 开发准备 STM32的USB官方例程库JoyStickMouseSTM32F103RCWindows7 代码修改 1.usb_pwr.c RESULT PowerOn(void) {u16 wRegVal; //USB_Cable_Config(ENABLE);//这里由于硬件问题用不到&#xff0c;注释/*** CNTR_PWDN 0 ***/w…