1. 程式人生 > >Unity3D手機中Input類touch詳解

Unity3D手機中Input類touch詳解

Unity3D手機中Input類touch詳解:

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