Unity 控制人物移动

    科技2022-07-17  147

    一、Unity自带的移动方式

    void Update () { float ho = Input.GetAxis("Horizontal"); float ve = Input.GetAxis("Vertical"); float jump = Input.GetAxis("Jump"); Vector3 player = new Vector3(ho,jump, ve); transform.Translate(player * 30.0f * Time.deltaTime); }

    二、常规方法

    //Input 四个方向 void Update () { //位移 if (Input.GetKey(KeyCode.W)) { this.transform.Translate(0, 0, 30.0f * Time.deltaTime, Space.Self); } if (Input.GetKey(KeyCode.S)) { this.transform.Translate(0, 0, -30.0f * Time.deltaTime, Space.Self); } if (Input.GetKey(KeyCode.A)) { this.transform.Translate(10f * Time.deltaTime, 0, 0, Space.Self); } if (Input.GetKey(KeyCode.D)) { this.transform.Translate(-10f * Time.deltaTime, 0, 0, Space.Self); } //旋转 if (Input.GetKey(KeyCode.E)) { this.transform.Rotate(0, 10f * Time.deltaTime, 0, Space.Self); } if (Input.GetKey(KeyCode.Q)) { this.transform.Rotate(0, -10f * Time.deltaTime, 0, Space.Self); } }

    三、通过刚体控制物体移动(必须添加刚体)

    public float moveSpeed = 10f; // Update is called once per frame void Update () { //通过刚体控制物体移动,需要添加刚体 Vector3 moveForward = Vector3.zero; if (Input.GetKey(KeyCode.W)) { moveForward.z += 1; } if (Input.GetKey(KeyCode.S)) { moveForward.z += -1; } if (Input.GetKey(KeyCode.A)) { moveForward.x += -1; } if (Input.GetKey(KeyCode.D)) { moveForward.x += 1; } GetComponent<Rigidbody>().MovePosition(Quaternion.LookRotation (transform.forward) * moveForward * moveSpeed * Time.fixedDeltaTime +transform.position); }
    Processed: 0.010, SQL: 8