作为一个学校项目,我开始在 matlab 中制作愤怒的小鸟克隆。在做了一点工作之后,我意识到也许我比我能咀嚼的多一点。
目前我正在研究它的物理特性,虽然我了解游戏背后的机制(碰撞、惯性等等),但我不知道我将如何在游戏中实现它。我是编程新手,但我喜欢它并且很快就掌握了它。
在愤怒的小鸟中,我们正在处理几个 OBB 之间的碰撞,我有一个检测碰撞的算法。我有一个功能可以检查每个盒子的所有角落并查看它是否在另一个盒子内。我意识到这不是最好的方法,但由于我无法想象分离轴定理,我选择不使用它。
当碰撞发生时,盒子正在穿透另一个盒子,当这种情况发生时,我在它的前一个点和当前点之间做一个线性插值。我在一个实例中对所有碰撞点执行此操作(这是我解决多个碰撞的方法)。使用插值,我检测到发生的第一次碰撞并实现碰撞响应。
我目前的问题是,当一个盒子放在另一个盒子上时,这种方法效果不佳,因为在每个实例中,顶部盒子都会非常轻微地穿透底部盒子,我会将其弹回。这导致我的整个事情停止,因为我回到过去,解决了碰撞,然后在下一个实例中碰撞再次发生。
我的问题是,我如何解决多个盒子相互叠放的问题。
我查看了http://www.wildbunny.co.uk上所有关于物理学的文章,并试图了解他的方法,但虽然我了解他的工作,但我不知道他是如何做到的。我也不知道任何动作脚本,所以他的大部分代码对我来说都是胡言乱语。
我浏览了互联网上的其他几个指南,但对我来说似乎没有任何意义。
这对我有很大帮助,如果有人能告诉我哪种方法通常用于实现像愤怒的小鸟这样的游戏的图形,特别是多重碰撞方法(我的足够好还是我需要像wildbunny在他的博客中谈到的投机性接触),以及基于盒子问题的盒子。
这个项目很难在两周内完成吗?