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方法中實現。
