我正在编程一个炸弹人在Java教程之后(这是我的第一场比赛)。 本教程提供了以下用于检测碰撞的代码。2D游戏碰撞的高效算法?
for (int p=0; p<entities.size(); p++) {
for (int s=p+1; s<entities.size(); s++) {
Entity me = (Entity) entities.get(p);
Entity him = (Entity) entities.get(s);
if (me.collidesWith(him)) {
me.collidedWith(him);
him.collidedWith(me);
}
}
截至目前,实体是包含敌人和玩家的数组列表。 因为我也想检测玩家与墙壁碰撞,我应该把每个单一的墙或砖瓦在水平进入实体arraylist?如果是这样,这算法是不是非常低效?这些图块不会与其他图块发生冲突,因此我正在考虑管理不同列表中的游戏实体。你有什么建议?有更高效的算法吗?
注意:我已经阅读了2D游戏中碰撞相关的其他问题。 非常感谢。
非常感谢您的回答,这非常明确和有用:)现在我将阅读文章。 – Rama
网格碰撞可以减少从数百个矩形检查到几个布尔检查的碰撞计算。它也像它有自己的内置碰撞检测方向。如果不是成千上万,速度可能快数百倍。 我使用的系统允许在空格子内自由移动。只有遇到的问题是对角线进入格子。 你的文章给了我一个想法,但解决这个问题。 – WVrock