我有由我正在创建的游戏的图像表示的实体对象。我能够检测到涉及矩形的简单碰撞,但我不确定如何阻止对象相互移动...
我不想要太多的物理模拟。我只是不希望任何物体能够相互穿过。如果实体撞到墙上,它就会停下来。如果墙撞到实体,墙就会停止。
我该怎么做呢?
我有由我正在创建的游戏的图像表示的实体对象。我能够检测到涉及矩形的简单碰撞,但我不确定如何阻止对象相互移动...
我不想要太多的物理模拟。我只是不希望任何物体能够相互穿过。如果实体撞到墙上,它就会停下来。如果墙撞到实体,墙就会停止。
我该怎么做呢?
简单的答案是列出所有“实体”并检查它们是否存在冲突。让每个实体知道它自己的半径(用于圆形碰撞)或边界框(用于矩形碰撞)。然后有一个像下面这样的循环:
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]);
}
}
编辑:您可以在每次实体尝试更新其位置并检查以确保新位置有效并且不与任何东西碰撞时运行碰撞代码。