繁体   English   中英

侧面滚动条2D游戏的碰撞检测,基于mario tile

[英]Collision detection for side scroller 2d game, mario tile based

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

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

我也听说过point方法,但是这样做似乎不太好,因为我使用的是矩形。

您可能想使用Rectangle绑定播放器,并将另一个Rectangle用作图块,它们具有.intersects方法,可用于碰撞。

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

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

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

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

http://www.jbox2d.org/

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM