1. 程式人生 > >【Unity3D】CharacterController控制人物的移動

【Unity3D】CharacterController控制人物的移動

    -

Unity3d使用CharacterController控制行走

  1. 使用Input.GetAxis(“Horizontal”) 和 “Vertical”得到垂直和水平方向的值
  2. 使用CharacterController.SimpleMove(Vector3)引數表示運動的方向和速度 單位可以認為是 m/s

程式碼如下:

private CharacterController cc;
    public float speed = 4;

    void Start()
    {
        cc = GetComponent<CharacterController>();
    }


    void
Update() { float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); if (Mathf.Abs(h)>0.1f||Mathf.Abs(v)>0.1) { Vector3 targetDir = new Vector3(h, 0, v); transform.LookAt(targetDir+transform.position); cc.SimpleMove(transform.forward * speed); } }

注:

  1. speed 是控制人物移動的速度
  2. float h 獲取的是操縱桿輸入和鍵盤輸入,值為(-1到1)的值,x軸正方向為1,負方向為-1,也就是說A鍵為-1,D鍵為1
  3. float v獲取的是操縱桿輸入和鍵盤輸入,值為(-1到1)的值,y軸正方向為1,負方向為-1,也就是說W鍵為1,S鍵為01
  4. targetDir 是鍵盤輸入之後獲取到的方向,將目標用SimpleMove方法向獲取到方向移動
  5. transform.lookat 是讓目標旋轉到獲取到的方向
  6. transform.forward 是讓目標向正前方移動