码迷,mamicode.com
首页 > 移动开发 > 详细

unity CharactorController下Move()官方示例下跳跃时主角无法移动操作问题。

时间:2016-11-27 16:25:34      阅读:192      评论:0      收藏:0      [点我收藏+]

标签: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()官方示例下跳跃时主角无法移动操作问题。

标签:input   direct   control   getc   new   style   har   检测   log   

原文地址:http://www.cnblogs.com/m-f-s/p/6106616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!