2015年10月29日 星期四

【Unity】GetTouch參數

這次來談談Unity內的touch參數,touch參數和鍵盤滑鼠一樣,可以從Input下取得座標、觸碰點編號和數量等等。
Unity  GetTouch

以上就是Input.GetTouch可以取得的參數,試著在手機上顯示的情況,以下是程式碼:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class TouchControl : MonoBehaviour {
    public Text touchData;
 void Update () {
        touchData.text = " ";
        if (Input.touchCount > 0){//(0)
            for (int i = 0; i < Input.touchCount; i++) {
                touchData.text += "Finger Id:" + Input.GetTouch(i).fingerId.ToString()//(1)
                    + " Tap Count:" + Input.GetTouch(i).tapCount.ToString()//(2)
                    + "\n"
                    + " Position:" + Input.GetTouch(i).position.ToString()//(3)
                    + "\n"
                    + " rawPosition:" + Input.GetTouch(i).rawPosition.ToString()//(4)
                    + "\n"
                    + " Delta Position:" + Input.GetTouch(i).deltaPosition.ToString()//(5)
                    + "\n"
                    + " Delta Time:" + Input.GetTouch(i).deltaTime.ToString()//(6)
                    + "\n"
                    + " Phase:" + Input.GetTouch(i).phase.ToString()//(7)
                    + "\n"
                    + "\n";

            }
            
        }
    }      
}
(0)在抓觸控點時,首先要確定觸控點數量,也就是Input.touchCount要大於0。
(1)fingerId:觸控點的編號,會依照觸控的先後給予編號。
(2)tapCount:點擊次數,在短時間即極小範圍間點即會被累加,不過實際時間和範圍官網也沒提到,可以用來判斷連續點擊。
(3)position:目前的觸碰位置,左下角為原點,數值的單位是pixel,會隨著觸碰點移動改變。
(4)rawPosition:觸碰的初始位置,左下角為原點,數值的單位是pixel,不會因為觸碰點移動改變數值。
(5)deltaPosition:前一個frame到目前frame的移動距離。
(6)deltaTime前一個frame到目前frame的經過時間
(7)phase:目前觸控點的狀態:
        Began:觸控開始。
        Moved:觸控點移動。
        Stationary觸控點停止。
        Ended觸控結束。
        Canceled觸控因為系統原因結束。

為了今後會用到的觸控功能花了些時間研究,這次就到這裡。

沒有留言:

張貼留言

【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...