【发布时间】:2017-07-16 15:28:09
【问题描述】:
我想知道如何防止两个正方形(在 Graphics2D 中绘制)相交。其中一个方格可以用 WASD 控制,另一个方格是静止的。
当我从任意一侧(上、下、左、右)将可控方块“推”到静止方块上时,我希望静止方块充当障碍物。
if ((userYC > (squareList.get(i).y - 50) && userYC < (squareList.get(i).y + 50) && userXC > (squareList.get(i).x - 50) && userXC < (squareList.get(i).x + 50))) {
brush.drawString("INTRUDING", 10, 125);
}
正方形由其左上角的 X 和 Y 坐标以及宽度和高度定义。我将宽度和高度设置为 50。在上面的代码中,我能够检测到正方形何时相交。但是,我不确定如何防止它们发生碰撞。
【问题讨论】:
-
在移动前检查碰撞,如果碰撞,不要让玩家移动。
-
如果玩家从上方击中静止方块,我仍然希望能够从一侧“滑动”到另一侧。不允许玩家移动不会打败这个吗?
-
如果其他方块发生碰撞,你想让玩家推动它们吗?
-
你知道我实际上误解了你第一次说的话。我尝试重新排列一些代码以适应您的建议,它现在可以工作了!非常感谢!
-
Np。请注意,尽管碰撞检测是一件出了名的难以正确完成的事情。如果您发现您的手动碰撞检测太慢或有错误,您可能需要开始研究游戏库/引擎来帮助解决游戏设计中令人讨厌的部分。