运用 Unity 内置 Input.GetTouch 在移动端实现多点触控事件。
注:仅适用于移动端, 不适用于 PC,编辑器
多点触控事件项目,可以下载 APP (Unity Remote5
http://zhushou.360.cn/detail/index/soft_id/2180710 )到手机等移动设备进行测试
在 Unity 设置 Edit->Project Settings->Editor 下的 Unity Remote Device 下选择 Any Android Device
完成后所有 Unity 工程全部退出,重新加载项目,
APP(Unity Remote5)安装完成之后,手机打开此 APP,用手机线连接电脑,手机打开调试
运行 Unity 项目,手机屏幕显示结果与编辑器相一致(手机端为触控事件)
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class test : MonoBehaviour
{
public Text text;
public float speed = 0.1F;
void Update()
{
if (Input.touchCount > 0) {
text.text = Input.touchCount.ToString(); //Text 显示几点触控
}
}
}
{
}
on;
确的
上面 Input.touchCount 用于检测触控点数量
Input.GetTouch(0).phase == TouchPhase.Moved 手指滑动中最后一帧
滑动的状态是运动的(判断手指在屏幕上是否滑动)
Input.GetTouch(0).deltaPosition 放回手指滑动增量
例如:Update 函数内(控制摄像机移动的代码):
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPha
se.Moved) //判断手机是否被触控,手指是否滑动
// Get movement of the finger since last frame 下一帧的位
移增量 仅有xy 值
Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPositi
// Move object across XY plane 将此脚本挂在摄像机上方向是正
transform.Translate(-touchDeltaPosition.x * speed, -touchD
eltaPosition.y * speed, 0);
多点触控,实现物体缩放(下面脚本挂在需要缩放的物体上)
using UnityEngine;
using System.Collections;
public class suofang1 : MonoBehaviour {
float distance= 0;//触控缩放的距离
private float lastDist = 0;//用于计算触控缩放
private float curDist = 0;//用于计算触控缩放
int t;//判断缩放触控
// Update is called once per frame
void Update () {
//两点以上触控,且触控点发生移动
chPhase.Moved
{
if( (Input.touchCount>1) && (Input.GetTouch(0).phase==Tou
|| Input.GetTouch(1).phase==TouchPhase.Moved
) )
var touch1 = Input.GetTouch(0); //第一根手指
var touch2 = Input.GetTouch(1); //第二根手指
curDist = Vector2.Distance(touch1.position, touch2.position)
;//两指间距
//当手指移动时,重置起始距离为当前距离
if( t==0 )
{
lastDist = curDist;
t=1;
}
distance=curDist-lastDist;
this.gameObject.transform.localScale += Vector3.one * dis
tance*Time.deltaTime ;
lastDist = curDist;
}
//没有触控事件
if( Input.touchCount==0 )
t=0;
}
}
---------------------------------------------------------------------
多点触控,实现在手机屏幕上绘制图片
代码如下:
using UnityEngine;
using System.Collections;
public class Draw : MonoBehaviour {
public Texture BG_img; //加载背景图片
public Texture ChuKong_img;//加载触控时添加的图片(眼睛)
int width;//接收手机屏幕宽度
int height; //接收手机屏幕高度
void Start ()
{
width = Screen.width;
height = Screen.height;
}
// Use this for initialization 在OnGUI 中绘制图形(下列代码在Update
中报错)
void OnGUI()
{
//绘制图片函数GUI.DrawTexture
GUI.DrawTexture (new Rect(0,0,width,height),BG_img,ScaleM
ode.StretchToFill);
int touchCount = Input.touchCount;//获取触控手指的数量
//遍历每根手指 触发相应事件
for(int i = 0 ; i