unity CharactorController下Move()官方樣本下跳躍時主角無法移動操作問題。

來源:互聯網
上載者:User

標籤:input   direct   control   getc   new   style   har   檢測   log   


 public float speed = 6.0F;    public float jumpSpeed = 8.0F;    public float gravity = 20.0F;    private Vector3 moveDirection = Vector3.zero;

void Update() { CharacterController controller = GetComponent<CharacterController>(); if (controller.isGrounded) { moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); moveDirection = transform.TransformDirection(moveDirection); moveDirection *= speed; if (Input.GetButton("Jump")) moveDirection.y = jumpSpeed; } moveDirection.y -= gravity * Time.deltaTime; controller.Move(moveDirection * Time.deltaTime); }


上面是官方給出的例子,由於檢測移動是只能在地面上才能用,所以要將檢測移動的代碼移出至判定外。 但是將判定位移移出後Y軸將會一直為0,所以需要定義一個變數用來計算當前Y軸方向速度。

 

修改後代碼:

 

 public float speed = 6.0F;    public float jumpSpeed = 8.0F;    public float gravity = 20.0F;
   public float verVel = 0; //vertical velocity private Vector3 moveDirection = Vector3.zero;

void Update() { CharacterController controller = GetComponent<CharacterController>();

      moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
     moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (controller.isGrounded) {   if (Input.GetButton("Jump")) moveDirection.y = jumpSpeed; }
verVel = -= gravity * Time.deltaTime; moveDirection.y = verVel; controller.Move(moveDirection * Time.deltaTime); }

 

原創:http://www.cnblogs.com/m-f-s/

unity CharactorController下Move()官方樣本下跳躍時主角無法移動操作問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.