繁体   English   中英

运动员的跳跃高度不一致-Unity

[英]Player Jumping Height is not consistent - Unity

我正在开发2D平台游戏,例如,我意识到玩家的跳跃功能并非每次都起作用。 如果玩家在移动/跑步时跳跃,或者玩家跳跃而没有移动,则跳跃高度是不同的。

我有2个独立的函数Move()和Jump(),Move()使用transform.Translate来使播放器移动,而Jump()使用elasticBody.AddForce()来使播放器跳转。 我已经尝试过将播放器的Move()函数更改为使用刚性主体来使播放器移动,而不是使用transform.Translate()。 而且它没有用。

我也尝试过使用transform.Translate来使玩家跳跃,这解决了不一致的跳跃高度问题,但是玩家只是向上移动而不是跳跃

这是我的代码结构的表示,而不是实际的代码,因为实际的代码就像600行

public class Player
{
    float JumpSpeed;
    bool isGrounded;

    void Update()
    {
        if (Input.GetKey(KeyCode.A))
            Move(Directions.Left);

        if (Input.GetKey(KeyCode.D))
            Move(Directions.Right);

        if (Input.GetKeyDown(KeyCode.Space))
            Jump(JumpSpeed);
    }

    public void Move(Directions dir)
    {
        Vector2 speed;
        //figure out speed and etc...

        //makes the player move in the right direction and speed
        transform.Translate(speed * Time.deltaTime);
    }

    public void Jump(float speed)
    {
        if(isGrounded)
            rigidBody.AddForce(new Vector2(0, speed * Time.deltaTime), ForceMode2D.Impulse);
    }
}

不确定这是否是您要解决的问题,但是使用平移来移动播放器, 然后加力跳转并不是真正解决问题的最佳方法。

我会考虑将刚体的速度部分用于跳跃和运动。 这将防止翻译对象可能引起的任何怪异现象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM