最近我一直在尝试创造一些我一直想要的东西,但从来没有技术和时间去做——电脑游戏。更准确地说,是我最喜欢的游戏之一的致敬/克隆。首先,我决定创建一个基于恶魔城系列的经典 2D 平台。
作为一名 Ruby 程序员,我决定使用Gosu。然后我决定我不想重新发明轮子,所以我要使用Chipmunk。
几天后,我最终遇到了莫名其妙的碰撞检测问题。我添加了边界框绘图功能,只是为了看看到底发生了什么。
正如你所看到的,贝尔蒙特撞到了他无法触及的墙块。由于 gosu gem 附带的演示游戏运行良好,我一定是做错了什么,我可能真的不明白如何Shape
定义多边形并将其添加到空间中。我很确定这不是我画它的地方。
该游戏有一个公共 repo,因此您可以看到墙壁 ( Brush < Entity
) 和玩家 ( Player < Entity
) 是如何定义的,并且它们确实具有简单的矩形多边形形状。墙不会添加到空间中(它们是流氓),只有玩家是。我试过调试游戏,看看body
位置在哪里,但一切看起来都很好。
https://github.com/ellmo/castellvania
玩家慢慢跌倒,但你可以用上/左/右箭头控制他。波浪号按钮 ( ~
) 显示边界框,并且碰撞框应该始终可见。
我需要一些帮助来了解我做错了什么。