Unity Addforce Bug



我目前正在制作一款简单的2d跳跃和奔跑游戏。我想移动我的球员与物理(使用addforce)。

  1. 在编辑器中,我的玩家以正常高度跳跃。但当我构建游戏时,它突然跳得更高了。我把一切在fixeduupdate(),不知道问题在哪里?

    //Movement
    rb.velocity = new Vector2(horizontalMove, rb.velocity.y);
    //Jump
    if (jumpPressed)
    {
    if (isGrounded)
    {
    rb.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
    anim.SetTrigger("takeOf");
    }
    }
    

如果跳跃键在每一帧中都为true,这可能就是问题所在。这意味着代码可以多次执行,多次重新施加向上的力(在它离地面足够远,以致地面检查无法检测到它之前)。如果是这种情况,可以通过以下命令修复:

  • 而不是使用AddForce,将垂直速度设置为跳跃的速度。
  • 将jumpPressed更改为仅当此帧按下jump时返回true
  • 限制你可以跳的频率(如果你不能在0.1秒内跳两次,这可以解决这个问题)

最新更新