我正在用 Java 编写 2D 平台游戏,但遇到了问题。我有两个对象:两者都有边界框,以及代表框角的四个坐标。
我的问题是我试图找到一种模拟碰撞的方法,但我似乎无法做到。我试过到处搜索,但大多数网站只是展示了 OpenGL 策略。
让我们像这样表示边界框坐标:
TL:左上角
TR:右上角
BL:左下角
BR:右下角
这是我最初建议测试碰撞的方式:
if(TL1 > TL2 && TL1 < TR2) //X-axis
//Collision happened, TL1 corner is inside of second object
else if(BL1 < TL2 && BL1 > BL2) //Y-axis
//Collision happened, BL1 corner is inside of second object
这是一种非常粗略的显示方式,但基本上我正在检查一个角是否与另一个对象相交。问题是,它不能同时考虑两个 axii。也就是说,即使一个对象高于另一个对象,也会发生 x 碰撞。
如果我检查两个轴上的碰撞,则无法判断它是水平碰撞还是垂直碰撞。或者也许有,我还没有弄清楚。
谁能指出我正确的方向?