(Java)停止通过墙壁移动

时间:2013-03-30 00:39:06

标签: java collision-detection

我有一个实体对象,由我正在创建的游戏的图像表示。我能够检测到涉及矩形的简单碰撞,但我不确定如何阻止物体相互移动...

我不想要太多的物理模拟。我只是不希望任何物体能够通过彼此。如果实体遇到墙,它就会停止。如果墙壁进入实体,则墙壁会停止。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

简单的答案是列出所有“实体”并检查它们是否存在冲突。 让每个实体知道它自己的半径(用于圆周碰撞)或边界框(用于矩形碰撞)。 然后有一个如下的循环:

for (int x = entityList.count; i < 0; i--)
{
    for (int y = entityList.count; i < 0; i--)
    {
        if (x == y) continue; // Make sure you don't check to collide with yourself
        CheckIfCollides(entityList[x], entitylist[y]);
    }
}

编辑: 每次实体尝试更新它的位置时都可以运行碰撞代码,并检查以确保新位置有效并且不会与任何东西发生碰撞。