1. 程式人生 > >Unity3d中的人物移動

Unity3d中的人物移動

com led update 方向鍵 距離 code ica ont mono

對於第三人稱的遊戲,主人公身上一般加一個character controller用來控制移動。這時候需要自己模擬重力,讓主人公站在地板上。如果用A D控制左右, W S控制前後,那麽控制移動代碼可以這麽寫:

public class Move : MonoBehaviour {
    public CharacterController character;
    public float speed;
    // Use this for initialization
    void Start () {
        character = this.GetComponent<CharacterController>();
        speed
=1f; } // Update is called once per frame void Update () { float horizontal = Input.GetAxis("Horizontal"); //A D 左右 float vertical = Input.GetAxis("Vertical"); //W S 上 下 float moveY = 0; float gravity = -9.8f; moveY = gravity*Time.deltaTime; character.Move(
new Vector3(horizontal, moveY, vertical) * speed * Time.deltaTime); } }

使用Input.GetAxis方法獲取下列默認軸: "Horizontal" 和"Vertical" 映射於控制桿、A、W、S、D和箭頭鍵(方向鍵)。horizontal和verical分別是兩個介於[-1,1]之間的數。利用這段代碼,人物只在xz平面上移動。

移動還可以用transform.Translate方法,或者使用Rigidbody並賦予剛體速度。但有一點要註意,如果移動命令是在Update()函數裏面,物體移動時會有抖動情況,因為每一幀時間不固定,移動的距離有長有短。解決這個問題的方法是把移動語句寫在FixedUpdate()函數裏面,因為該函數每一幀的長度固定。

具體其他移動方法可以看http://www.jianshu.com/p/5653b0be5fd4

Unity3d中的人物移動