我正在按照教程用Java编写第一个游戏炸弹人。 教程建议使用以下代码来检测碰撞。
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);
}
}
到目前为止,entities是一个包含敌人和玩家的数组列表。由于我也希望检测玩家是否与墙壁碰撞,所以我应该将每个单独的墙壁或砖块平铺到实体数组列表中吗?如果是这样,那么这个算法不是非常低效吗?这些瓷砖不会与其他瓷砖碰撞,因此我想在不同的列表中管理游戏实体。你有什么建议吗?是否有更有效的算法来解决这个问题?
注意:我已经阅读了其他与2D游戏中碰撞相关的问题。非常感谢。