0

好的,所以我正在制作一个 2d 横向卷轴。我正在做一个像马里奥这样的块系统。我想知道作为球员有 4 条线是否可以:头、右侧、左侧、脚。并有一个方法检查 rightside.intersects 是否是这样做的好方法?用于碰撞检测。我尝试通过矩形和矩形进行碰撞,但这是一个问题,因为如果玩家接触地面顶部,我必须检查地面然后停止重力向下移动但是当我去检查玩家是否击中侧面的块时,玩家已经发送了一个信号说它击中了它,即使它没有,原因是它正在撞击地面。

有什么想法可以通过块和玩家进行简单的碰撞吗?游戏中没有山丘或倾斜。顺便说一下,这是用 Java 编码的。

我也听说过 point 方法,但它看起来并不好,因为我使用的是矩形。

4

4 回答 4

1

您可能希望使用 Rectangle 来绑定玩家使用另一个 Rectangle 作为瓷砖,它们有一种.intersects可用于碰撞的方法。

于 2013-08-11T16:28:57.630 回答
0

我建议您使用物理引擎来利用碰撞检测等,您可以使用 jBox2D,将其与 Slick2D 集成,jBox2D 将提供碰撞回调,您可以在其中获得有关该特定检测的更精细定义。

您可以在此处获取 jBox2D(原始 Box2D C++ 物理模拟器的一个端口):

http://www.jbox2d.org/

您可以在此处了解有关 box2D 的更多信息:(本教程适用于 ActionScript,但它们非常相似,他(Todd Kerpelman)讨论了一些游戏架构问题,因此非常有帮助)。

http://www.kerp.net/box2d/

于 2014-02-05T16:44:18.570 回答
0

您可能要检查字符周围至少 8 个点,每个角一个点,边界矩形每个边缘的中间一个点。我将从玩家角色正下方的那个开始并对其进行测试,然后在您看到导致没有它们的行为后添加所有其他的,即。过早掉下边缘,穿过墙壁等。

于 2013-09-23T14:27:28.877 回答
0

正如 arynaq 所说,你可以有一个边界框,但让它分别检查水平和垂直碰撞,这样你就可以以不同的方式处理你的碰撞类型。或者您可以进行更具体的检查,因为 .headCollided 或 .feetCollided 只检查一侧是否发生碰撞。

于 2013-08-12T02:11:45.637 回答