Проблема Unity PlayerController: телепортируемый прыжок с лестницы - PullRequest
0 голосов
/ 26 марта 2019

Следующая функция позволит мне подниматься по лестницам, спускаться по лестницам и ничего не делать на лестницах.

У меня проблемы с прыжками с лестниц.

Я телепортируюсь нанаправление движения X и после этого падает на землю.

  • x = игрок и

  • - = поведение при прыжке

  • | - |= лестница

1.) | - |x

2.) | - |- - - - - - x (только один кадр)

После этого я обычно падаю вниз, как прыжок.

//PlayerController
   //Ladder gets called in Update
   private void Ladder(
   {
        //Jumping from Ladder           
        if (Input.GetKeyDown(KeyCode.Space))        
            if(!controller.isGrounded)   
                    if (LadderClimb.canClimb)
                    {
                        Debug.Log("intend jump");
                        motion = true;

                        moveDirection.x = 0f;
                        moveDirection.x = (-jumpForce * 10);  
                        moveDirection.y = -jumpForce;
                    }


        //Pressing W on ladder
        if (Input.GetKey(KeyCode.W))                    
        {
            if (LadderClimb.canClimb && !reverseClimbing)   //Go Up
            {
                motion = true;
                moveDirection.y = 0f;
                moveDirection.y = (jumpForce * climbMultiplier);
                if (!controller.isGrounded) moveDirection.x = 0f;
            }
            else if (LadderClimb.canClimb && reverseClimbing)   //Go Down
            {
                motion = true;
                moveDirection.y = 0f;
                moveDirection.y = (-jumpForce * climbMultiplier);
                if (!controller.isGrounded) moveDirection.x = 0f;
            }
        }

        //Pressing S on ladder
        else if (Input.GetKey(KeyCode.S))                   
        {
            if (LadderClimb.canClimb && reverseClimbing)    //Go Up
            {
                motion = true;

                moveDirection.y = 0f;
                moveDirection.y = (jumpForce * climbMultiplier);
                if (!controller.isGrounded)moveDirection.x = 0f;
            }
            else if (LadderClimb.canClimb && !reverseClimbing) //Go Down 
            {
                motion = true;                                  

                moveDirection.y = 0f;
                moveDirection.y = (-jumpForce * climbMultiplier);
                if (!controller.isGrounded) moveDirection.x = 0f;
            }

        }               


        //Do Nothing (or just look around)
        if (LadderClimb.canClimb)                           
            if (!Input.GetKey(KeyCode.W) && !Input.GetKey(KeyCode.S) 
               && !Input.GetKey(KeyCode.Space))
                motion = false;
            }
   }
//TThose functions apply the Movement in my character Controller:
//I did put my normal jump function in there too

    //Apply Physics     
    private void PhysicFactors()
    {
        moveDirection.y = moveDirection.y + (Physics.gravity.y 
        * gravityScale * Time.deltaTime); 
    }

    //Move
    private void Move()
    {
        controller.Move(moveDirection * Time.deltaTime);
    }

    //General Jump
    private void Jump()
    {
        moveDirection.y = 0f;               
           if (Input.GetButtonDown("Jump"))     
                moveDirection.y = jumpForce;    
    }
}




I highly believe, this code causes my "teleport on player x. axis

        //Jumping from Ladder           
        if (Input.GetKeyDown(KeyCode.Space))        
            if(!controller.isGrounded)   
                    if (LadderClimb.canClimb)
                    {
                        Debug.Log("intend jump");
                        motion = true;

                        moveDirection.x = 0f;
                        moveDirection.x = (-jumpForce * 10);  
                        moveDirection.y = -jumpForce;
                    }

moveDirection.x = (-jumpForce * 10); 

10 определяет, как далеко отпо лестнице я прыгну

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

Я не хочу, чтобы меня телепортировали на -JumpForce* 10, а затем падают прямо на землю

Я так много исследовал, но не могу понять ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...