unity3D 实现手机的双指触控和Input类touch详解
多点触控时,下标是从0开始的,两个触控点下标就是0,1。
代码如下:
nt touchCount = 2; // 触摸帧的数量 if(touchCount == Input.touchCount())
{ vector2 touchPosition1 = Input.GetTouch(0).position; vector2 touchPosition2 = Input.GetTouch(1).position; }
1.Input.touchCount 触摸随之增长,一秒50次增量。
2.Input.GetTouch(0).phase==TouchPhase.Moved 手指滑动中最后一帧滑动的状态是运动的。
3.TouchPhase 触摸的几个状态。
4.Touch.deltaPosition 增量位置(Input.GetTouch(0).deltaPosition)最后一帧滑动的值,只返回xy轴坐标,也可用vector3(z轴为0),所以一般用vector2接收。
static var aa:int; function Update () { if(Input.touchCount>0) { print(Input.touchCount); } } function OnGUI() { GUI.Label(Rect(34,34,34,34),"sdff"); }
touchCount指的是触摸帧的数量。要注意的是:touch事件 只能在模拟器或者真机上运行(已测试通过),大约一秒钟touch不放。touchCount+50次左右。2.Input.touches 触摸列表。
// Prints number of fingers touching the screen //输出触摸在屏幕上的手指数量 function Update () { var fingerCount = 0; for (var touch : Touch in Input.touches) { if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled) fingerCount++; } if (fingerCount > 0) print ("User has " + fingerCount + " finger(s) touching the screen"); }
3.让cube随着touch 移动代码:
static var count:int; //定义touchCount数 var particle_:GameObject;//定义存放cube对象 var touchposition:Vector3; //存储移动三维坐标值 function Update () { if(Input.touchCount>0) { count+=Input.touchCount;} if((Input.touchCount>0&&Input.GetTouch(0).phase==TouchPhase.Moved)) //[color=Red]如果点击手指touch了 并且手指touch的状态为移动的[/color] { touchposition=Input.GetTouch(0).deltaPosition; //[color=Red]获取手指touch最后一帧移动的xy轴距离[/color] particle_.transform.Translate(touchposition.x*0.01,touchposition.y*0.01,0);//[color=Red]移动这个距离[/color] }} function OnGUI() { GUI.Label(Rect(10,10,100,30),"cishu:"+count.ToString()); GUI.Label(Rect(10,50,100,30),touchposition.ToString()); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。