我想知道这样实现矩形的简单2D碰撞检测是否是一个好主意:
Collision col = new Rectangle();
'可以',但我应该吗? contains()
和intersects()
方法,我想扩展Rectangle类;我应该这样做还是应该为Java中的2D碰撞检测做其他事情? 最佳答案
您可以轻松扩展Rectangle
class CollidableRectangle extends Rectangle
{
public boolean isCollidingWith(Rectangle otherRect)
{
//check collision
}
// return all collisions
public List<CollidableRectangle> getCollisions(List<Rectangle)
{
// code
}
}
那么您将使用它像:
CollidableRectangle r1 = new CollidableRectangle();
CollidableRectangle r2 = new CollidableRectangle();
r1.isCollidingWith(r2);
//and so on
如评论中所述,我没有使用
Collision
类。通常,您需要它是因为您还对诸如 depth 或碰撞平面之类的碰撞参数感兴趣,因此您会遇到以下情况:class Collision
{
CollidableRectangle first, second;
float depth;
Line2D collidingLine;
}
并且该方法将返回冲突列表:
public List<Collision> getCollisions(List<Rectangle) { ... }