我目前正在制作一款简单的2d跳跃和奔跑游戏。我想移动我的球员与物理(使用addforce)。
-
在编辑器中,我的玩家以正常高度跳跃。但当我构建游戏时,它突然跳得更高了。我把一切在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秒内跳两次,这可以解决这个问题)