Unity 基礎 之 輸入系統介紹

這是我參與8月更文挑戰的第12天,活動詳情查看:8月更文挑戰數組

鍵盤輸入:

對於鍵盤按鍵操做,只有三種操做:markdown

  • 鍵被按下: Input.GetKeyDown();
  • 鍵被鬆開: Input.GetKeyUp() ;
  • 鍵被按下一直沒鬆開: Input.GetKey();
  • Horizontal (水平軸),Vertical (垂直軸)

根據座標軸名稱返回虛擬座標系中的值使用控制器和鍵盤輸入時此值範圍在-1到1之間post

例如:ui

public class example : MonoBehaviour {
 
	public float speed = 10.0F;
	public float rotationSpeed = 100.0F;
 
	 void Update() 
  {
  	  // 獲取橫向和縱向座標軸,默認狀況下他們關聯到方向鍵上,值的範圍是在-1到1之間
		   float translation = Input.GetAxis("Vertical") * speed**Time.deltaTime;
		   float rotation = Input.GetAxis("Horizontal") * rotationSpeed*Time.deltaTime;
     // 沿着z軸平移對象
		   transform.Translate(0, 0, translation);
     // 以咱們的y軸爲中心旋轉
		   transform.Rotate(0, rotation, 0);
	 }
}

複製代碼

鼠標輸入

  • Mouse X (水平軸), Mouse (垂直軸), Mouse ScrollWheel (鼠標中鍵滾動)
  • Input.GetMouseButtonDown(); 按下觸發
  • Input.GetMouseButtonUp(); 鬆開觸發
  • Input.GetMouseButton(); 按下不鬆開一種觸發括號中輸入 0對應左鍵,1對應右鍵,2對應中鍵軸輸入 Input.GetAxis/GetAxisRaw
public class question1 : MonoBehaviour
{
    // 在鼠標左鍵被按下時,利用鼠標的中軸,實現模型的縮放。
    void Update () 
    {
        if (Input.GetMouseButton(0))   //按下鼠標左鍵
        {   
            //獲取鼠標中軸滾動量
            float a = Input.GetAxis("Mouse ScrollWheel");
            //找到攝像機組件Camera上的fieldOfView屬性
            this.gameObject.GetComponent<Camera>().fieldOfView += a;
        }
    }
}
複製代碼

觸摸

  當將Unity遊戲運行到IOS或Android設備上時,桌面系統的鼠標左鍵能夠自動變爲手機屏幕上的觸屏操做,但如多點觸屏等操做倒是沒法利用鼠標操做進行的。Unity的Input類中不只包含桌面系統的各類輸入功能,也包含了針對移動設備觸屏操做的各類功能,下面介紹一下Input類在觸碰操做上的使用。this

首先介紹一下Input.touches結構,這是一個觸摸數組,每一個記錄表明着手指在屏幕上的觸碰狀態。每一個手指觸控都是經過Input.touches來描述的;spa

屬性說明code

  • fingerId:觸摸的惟一索引
  • position:觸摸屏幕的位置
  • deltatime:從最後狀態到目前狀態所通過的時間
  • tapCount:點擊數。Andorid設備不對點擊計數,這個方法老是返回1
  • deltaPosition:自最後一幀所改變的屏幕位置
  • phase:相位,也即屏幕操做狀態

其中phase(狀態)有如下這幾種:orm

狀態 說明
Began 手指剛剛觸摸屏幕
Moved 手指在屏幕上移動
Stationary 手指觸摸屏幕,但自最後一陣沒有移動
Ended 手指離開屏幕
Canceled 系統取消觸控跟蹤,緣由如把設備放在臉上或同時超過5個觸摸點
相關文章
相關標籤/搜索