Как я могу изменить положение х, прыгая по воздуху с помощью C #? - PullRequest
1 голос
/ 22 марта 2012

у меня есть контроллер персонажа, который прыгает, но во время прыжка я хочу изменить положение x персонажа, чтобы он мог поворачиваться во время прыжка, пока это моя попытка

     //start of character controller
    CharacterController controller = GetComponent<CharacterController>();
    if (controller.isGrounded) {

     //get the player vector movement vector
         movePlayer = new Vector3(Input.acceleration.x,0,1);
         //float h = Input.acceleration.x;
         //translate the players movement
         transform.Translate(movePlayer * moveSpeed * Time.deltaTime);
         //the run animation
         animation.CrossFade("run");

    //restrict the movement of x-axis for player
    Vector3 pos = transform.position;
    pos.x = Mathf.Clamp(pos.x, -3.0f, 3.0f);
    transform.position = pos;

   if (Input.GetButton("Jump")){
    //my ptoblem is here, the x axis on the vector3 is not happening    
    movePlayer =transform.TransformDirection(new   Vector3(Input.acceleration.x,jumpSpeed,forwardJumpSpeed)); 


              }  

         }

    // attach the gravity and move controller     
    movePlayer.y -= gravity * Time.deltaTime;
    controller.Move(movePlayer * Time.deltaTime);

currentcode:

void Update() {

    CharacterController controller = GetComponent<CharacterController>();

         //get the player vector movement vector
         movePlayer = new Vector3(Input.GetAxis("Horizontal"),0,1);
         //float h = Input.acceleration.x;
         //translate the players movement
         transform.Translate(movePlayer * moveSpeed * Time.deltaTime);
         //the run animation
         animation.CrossFade("run");

    //restrict the movement of x-axis for player
    Vector3 pos = transform.position;
    pos.x = Mathf.Clamp(pos.x, -3.0f, 3.0f);
    transform.position = pos;

    if (controller.isGrounded) {

   if (Input.GetButton("Jump")){

    movePlayer =transform.TransformDirection(new Vector3(Input.acceleration.x,jumpSpeed,forwardJumpSpeed)); 


              }


         }

     movePlayer.y -= gravity * Time.deltaTime;
    controller.Move(movePlayer * Time.deltaTime);

это мой текущий код, оператор перехода в if находится внутри if (controller.isGounded), символ все еще перемещается, но когда я нажимаю пробел, он больше не перемещается.

1 Ответ

2 голосов
/ 23 марта 2012

Когда игрок прыгает, он больше не заземляется, поэтому любой код под if(controller.isGrounded) не вызывается. Поместите свой код движения вне этого, но держите прыжковый код в нем, и он будет работать хорошо.

// movement code goes here

// Keep the jumping code inside this if-statement
if (controller.isGrounded) {
    if (Input.GetButton("Jump")){  
       movePlayer =transform.TransformDirection(new Vector3(Input.acceleration.x,jumpSpeed,forwardJumpSpeed)); 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...