標籤:csharp 順時針 鍵盤 動向 控制 sharp 上下 color horizon
Transform.Translate通過設定下一步移動的向量方向和大小進行移動。
有兩種移動方式:
1.ADWS控制遊戲對象上下左右移動,不涉及旋轉;
2.AD通過旋轉控制方向,WS控制前後移動,也可以實現受控位移。
無論哪種方式,首先都要擷取鍵盤響應,可以通過Input.GetKey擷取,也可以通過Input.GetAxisRaw擷取。
第一種方式下的代碼如下:
float input_H = Input.GetAxisRaw("Horizontal"); //擷取X方向的移動方向,如果輸入A,輸出-1;如果輸入D,輸出1。float input_V = Input.GetAxisRaw("Vertical"); //擷取Z方向的移動方向,如果輸入W,輸出1;如果輸入S,輸出-1。 Vector3 v = new Vector3 (input_H, 0, input_V); //建立移動向量v = v.normalized; //如果是斜線方向,需要對其進行標準化,統一長度為1v = v * speed * Time.deltaTime; //乘以速度調整移動速度,乘以deltaTime防止卡頓現象transform.Translate (v); //移動
第二種方式下的代碼如下:
float input_H = Input.GetAxisRaw("Horizontal"); //float input_V = Input.GetAxisRaw ("Vertical"); //transform.Rotate (new Vector3 (0, input_H, 0)); //繞y軸旋轉,A鍵順時針;D鍵逆時針float curSpeed = speed * input_V * Time.deltaTime; transform.Translate (transform.forward * curSpeed,Space.World);//沿著物體前後方向移動, 由於使用了forward,因此要指定移動的座標係為全域座標
最後一句代碼也可以改為:
transform.Translate (new Vector3(0,0,curSpeed));//預設沿著物體的z軸移動,即為前後方向
上述代碼均需要在update方法中實現。
Unity中的物體移動-Transform.Translate