Unity2D - 非均匀跳跃,跳得太高

时间:2016-02-26 00:38:24

标签: c# unity3d-2dtools

我正在使用C#在Unity 5中为学校构建2D平台游戏。有时,当我的角色跳跃时,跳跃的速度非常高。任何规律性或任何特定的位置都不会发生这种情况。起初我使用的是AddForce然后我试着改变刚体2D上的Y速度,但它并没有解决问题。我将跳转代码从Update移动到了FixedUpdate,但这只会使跳转响应变慢。我正在使用GetKeyDown,以便在密钥关闭的整个时间内不会施加力。我已经使用了Debug.Log并运行了几个测试,以确保每次按键时跳转代码不会执行多次。我读到它可能与如何检测地面有关,但我可以在跳转代码中的几个地方设置接地为假,但它仍然无济于事。我已经将用于检测地面的代码从FixedUpdate移动到Update更新到LateUpdate,但无济于事。下面是我的跳转代码和我用来检测地面的代码。

in LateUpdate() grounded = Physics2D.OverlapCircle(GroundCheck.position, groundRadius, whatIsGround);               //Use proper variables to check for ground and set grounded bool accordingly

in Update()//JUMPING-----------------------------------------------------------------------
    if (grounded &&                                     //If the player is on the ground,
        Input.GetKeyDown(KeyCode.Space) &&              //and the jump button is pressed,
        RanaAnim.GetBool("Blocking") == false &&        //and Rana is not blocking, 
        !attacking)                                     //or performing an attack
        //&& GameManager.InputAllowed)                  //and the game is not paused...
    {
        if (GameManager.characterSwitch)                                    //If Rana is the active character...
        {
            gameObject.GetComponent<AudioSource>().clip = RanaJump;         //Prime Rana's jump audio clip
            gameObject.GetComponent<AudioSource>().Play();                  //Play Rana's jump audio clip
        }
        else                                                                //If Haroun is the active character...
        {
            gameObject.GetComponent<AudioSource>().clip = HarounJump;       //Prime Haroun's jump audio clip
            gameObject.GetComponent<AudioSource>().Play();                  //Play Haroun's jump audio clip
        }

        HarounAnim.SetBool("Ground", false);            //Communicate jumping to Haroun's Animator
        RanaAnim.SetBool("Ground", false);              //Communicate jumping to Rana's Animator

        GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, 0);                //Zero out vertical velocity
        GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, jumpForce));                                             //Assign jump strength via AddForce on Y axis (Jumpforce Settings: Haroun|1670 Rana|4000)
        //GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, jumpForce);      //Jump Strength via velocity on Y axis (Jumpforce Settings: Haroun|25 Rana|75)
    }

关于此的更多背景:玩家有两个可以随时互换的可玩角色。一个名为Haroun,另一个名为Rana,因此是多个字符引用。 Haroun和Rana是他们自己的独立对象,拥有自己的精灵渲染器和碰撞器,它们用布尔值关闭和打开。 Rana和Haroun对象都是此脚本附加到的Character对象的子对象。

0 个答案:

没有答案