Java 2D游戏中的跳跃和站在物体上

Java 2D游戏中的跳跃和站在物体上,java,Java,我正在制作一个2D小游戏,我想知道理论上应该如何在物体上跳跃和站立。 跳跃时应该有某种重力吗?我应该使用碰撞检测吗? 我想了解的一个很好的例子是在《马里奥》中跳跃。我认为对于跳跃来说,最好创建一些使用“游戏时间”的简单模型。我个人会根据重力创建一些物理模型,但你可以随心所欲 若你们想让你们的角色“站立”在物体上,你们必须创建一些碰撞检测。一个好的开始是通过一个或多个圆(或线)来近似物体,计算它们之间的碰撞,如果近似碰撞,则通过更精确的方法确定最终状态。关于是否应该有重力和碰撞检测,我个人会说是和

我正在制作一个2D小游戏,我想知道理论上应该如何在物体上跳跃和站立。
跳跃时应该有某种重力吗?我应该使用碰撞检测吗?

我想了解的一个很好的例子是在《马里奥》中跳跃。

我认为对于跳跃来说,最好创建一些使用“游戏时间”的简单模型。我个人会根据重力创建一些物理模型,但你可以随心所欲


若你们想让你们的角色“站立”在物体上,你们必须创建一些碰撞检测。一个好的开始是通过一个或多个圆(或线)来近似物体,计算它们之间的碰撞,如果近似碰撞,则通过更精确的方法确定最终状态。

关于是否应该有重力和碰撞检测,我个人会说是和是!它不一定很复杂,但一旦这些东西到位,“主循环”的伪代码就会变得相对简单:

if not colliding with object underneath, apply gravity
if user presses jump key and not colliding with surface //i.e. if we're in the air already, don't jump again
    apply upward velocity
这当然过于简单化了,还有其他一些角落的情况需要处理(比如确保当你跳下来时,你不会被嵌入或潜在地穿过地板)


你可能想看看它能为你处理很多事情,比如所有Java2d的东西,碰撞检测等等。即使你不坚持使用它,它也会是一个很好的平台,可以用来构建原型或玩转所讨论的想法。

站在物体上意味着碰撞检测,你可以近似角色和场景具有基本形状(矩形、圆等)的环境对象。
要检查形状是否发生碰撞,请逐个检查轴(本例中为X轴和Y轴)。这是对“分离轴定理”的解释(第1节).

理想的做法是将你的角色设置在所谓的碰撞框内。至于跳跃,一种计算重力的算法是理想的,但如果你的游戏与马里奥一样,你可以设置一个固定的轨迹。最后,你可能会从这个网站上的游戏开发专家那里得到更多信息: