【发布时间】:2018-02-24 17:26:13
【问题描述】:
我正在尝试专注于我正在创建的游戏的碰撞检测。
collisionBox 是游戏玩家的矩形。 所有的线都代表了玩家无法通过的矩形或墙壁的特定边缘。
leftLine = new Line2D.Float((float) wall.getMinX(), (float) wall.getMaxY() , (float) wall.getMinX(), (float) wall.getMinY());
rightLine = new Line2D.Float((float) wall.getMaxX(), (float) wall.getMaxY(), (float) wall.getMaxX(), (float) wall.getMinY());
topLine = new Line2D.Float((float) wall.getMinX(), (float) wall.getMaxY(), (float) wall.getMaxX(), (float) wall.getMaxY());
botLine = new Line2D.Float((float) wall.getMinX(), (float) wall.getMinY(), (float) wall.getMaxX(), (float) wall.getMinY());
hitLeft = leftLine.intersects(collisionBox);
hitRight = rightLine.intersects(collisionBox);
hitTop = topLine.intersects(collisionBox);
hitBottom = botLine.intersects(collisionBox);
if (hitTop) {
return Top;
} else if(hitBottom) {
return Bottom;
} else if(hitLeft) {
return Left;
} else if (hitRight){
return Right;
}
我遇到的错误是,因为首先评估顶部和底部的墙壁,然后如果我撞到朝向顶部或底部的侧(左/右)墙,那么显然前两个检查之一将错误地返回 true . 我的代码中的其他功能取决于确切知道撞到墙的哪一侧,因此更简单的 collisionBox.intersects(wall) 是不够的。
虽然我了解问题本身,但我对任何形式的解决方案都感到困惑,真的希望你们能提供帮助。
【问题讨论】:
标签: java intersection rectangles