我想知道这样实现矩形的简单2D碰撞检测是否是一个好主意:

  • 制作我自己的碰撞检测类,该类扩展了Rectangle类。
  • 然后,在实例化该对象时执行诸如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) { ... }
    

    10-07 12:21