Unity中的物體移動-Transform.Translate


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; //如果是斜線方向,需要對其進行標准化,統一長度為1 v = 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方法中實現。 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM