1、簡單控制
阿新 • • 發佈:2017-08-23
ota time posit 垂直 log 字符 space date cto
一、物體移動
法1:
void Update () { //transform:(轉換)Translate:(平移)Input.GetAxis:(獲得軸輸入) Horizontal:(水平軸)Vertical:(垂直軸) transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * 5, 0, Input.GetAxis("Vertical") * Time.deltaTime * 5); } //Time.deltaTime(使物體勻速):如果不乘以Time.deltaTime則以每幀為單位進行旋轉,如果乘以Time.deltaTime則以每秒為單位
其中:
void Update () { //物體方向以攝像機坐標為準 transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform); } void Update () { //物體方向以世界坐標為準,其中Space.Self以本地(物體)坐標為準 transform.Translate(Vector3.forward * Time.deltaTime,Space.World); }
法2:
voidUpdate () { if (Input.GetKey(KeyCode.W))//GetKey(獲取鍵盤輸入)KeyCode(鍵碼) { transform.Translate(Vector3.forward * Time.deltaTime * 5); } if (Input.GetKey(KeyCode.S)) { transform.Translate(0, 0, -Time.deltaTime * 5);//三個參數對應於(在X抽上左右移動,在Y軸上上下移動,在Z軸上前後移動)} if (Input.GetButton("Jump")) { transform.Translate(Vector3.up * Time.deltaTime * 5); } }
註:Translate後接Vector3三維矢量不需要添加三個參數。GetButton:後面加雙引號直接輸入按鍵名稱的字符串,而GetKey則是輸入字符碼。(GetButton:點住鼠標不放,代碼會持續運行;GetButtondown:點一次代碼運行一次;GetButtonUp:放開鼠標才會執行)
二、物體的旋轉
float rotateSpeed = 50f; void Update () { if (Input.GetButton("Fire2")) { transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed); } if (Input.GetButton("Fire1")) { transform.Rotate(Time.deltaTime * rotateSpeed, 0, 0); } }
三、限制移動範圍
void Update () { if (transform.position.x > -4 && transform.position.x < 4) { transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * 5, 0, 0); } if (transform.position.x < -4) { transform.Translate(Time.deltaTime * 5, 0, 0); } if (transform.position.x > 4) { transform.Translate(-Time.deltaTime * 5, 0, 0); } }
1、簡單控制