好吧,我正在制作一个2d侧卷轴。我正在做像马里奥这样的块系统。 我想知道作为一名球员有4条线是否正常:头部,右侧,左侧,脚。 并有一个方法检查是否rightside.intersects阻止这是一个很好的方法吗? 用于碰撞检测。 我尝试通过矩形和矩形进行碰撞,但这是一个问题,因为我必须检查地面,如果玩家接触到地面顶部然后停止向下移动,但是当我去检查玩家是否碰到一侧的一块时,玩家已经发出一个信号,表示即使它没有击中它,原因是因为它击中了地面。
任何想法如何通过块和玩家进行简单的碰撞?游戏中没有山丘或斜面。顺便提一下,这是用Java编写的。
我也听说过点法,但这对我来说似乎并不好,因为我使用的是矩形。
答案 0 :(得分:1)
您可能希望使用Rectangle绑定播放器并使用另一个矩形作为图块,它们可以使用.intersects
方法进行碰撞。
答案 1 :(得分:0)
如arynaq所说,你可以有一个边界框,但是它可以分别检查水平和垂直碰撞,这样你就能以不同的方式处理你的碰撞类型。或者你可以做更具体的检查,如.headCollided或.feetCollided,只检查一边是否发生碰撞。
答案 2 :(得分:0)
您可能想要检查角色周围至少8个点,每个角上一个点和边界矩形每个边缘中间的一个点。我从玩家角色正下方的那个开始并测试它,然后在看到没有它们的行为导致时添加所有其他的,即。太早脱落边缘,穿过墙壁等。
答案 3 :(得分:0)
我建议你使用物理引擎来利用碰撞检测等,你可以使用jBox2D,将它与Slick2D集成,jBox2D将提供碰撞回调,你可以获得更多有关特定检测的细则定义。
你可以在这里获得jBox2D(原始Box2D C ++物理模拟器的一个端口):
你可以在这里了解更多关于box2D的信息:(这个教程适用于ActionScript,但它们非常相似,而且他(Todd Kerpelman)讨论了一些游戏架构问题,所以它真的很有帮助。)