在跳跃过程中角色接触墙壁时,重力不起作用

时间:2018-06-05 04:48:14

标签: unity3d character 2d game-physics gravity

仅在以下情况下发生: 在跳跃时击中墙壁+按下左右箭头。

当没有墙壁时,重力行为和性格下降。 但是,当角色撞到墙壁时,速度Y立即变为0。 当左右箭头键向上时,字符会再次下降。

GroundCheck效果很好。

我一直在思考很多时间,但我不知道为什么。 我需要帮助。

我的游戏错误视频:https://youtu.be/5omWCYm-y14

我的代码:

private void FixedUpdate()
{
    isGrounded = Physics2D.OverlapCircle(GroundCheck.position, GroundCheckRadius, GroundLayer) != null;

    if (isGrounded)
    {
        if (Input.GetKeyDown(KeyCode.Z))
        {
            body.AddForce(Vector2.up * JumpForce);
        }
    }

    body.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * DefaultSpeed, body.velocity.y);
}

1 个答案:

答案 0 :(得分:0)

如果你直接设定速度,刚体会产生很大的水平力。

替换

body.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * DefaultSpeed, body.velocity.y);

body.AddForce(Input.GetAxisRaw("Horizontal") * DefaultSpeed * Vector2.right);