secondsen 发表于 2012-9-8 09:51:17

碰撞碰撞,矩形

/*

RectX;去做碰撞的矩形左上顶点x坐标

RectY;去做碰撞的矩形左上顶点y坐标

RectWidth;去做碰撞的矩形的宽度

RectHeight;去做碰撞的矩形的高度

ObjX;被碰撞的矩形左上顶点的x坐标

ObjY;被碰撞的矩形左上顶点的y坐标

ObjWidth;被碰撞的矩形的宽度

ObjHeight;被碰撞的矩形的高度

*/

public boolean isCollide(int RectX,int RectY,int RectWidth,int RectHeight,int ObjX,int ObjY,int ObjWidth,int ObjHeight){

    if((RectX+RectWidth>ObjX)&&(RectX<ObjX+ObjWidth)&&
      (RectY+RectHeight>ObjY)&&(RectY<ObjY+ObjHeight))

      return true;//true表示两个矩形发生了碰撞

    return false;

}

这个东西,两个矩形必须是两个边平行x轴 两个边平行y轴的,那么任意矩形怎么办?
要是我想做个游戏,两个矩形碰撞,不都是任意的矩形么?用上面那个不好用啊。

FantasyDR 发表于 2012-9-8 21:41:45

和轴平行的叫AABB。( axis-aligned bounding box)
任意方向的叫OBB。(oriented bounding box)

你可以用OBB Collision作为关键字搜一下各种解决方案……

secondsen 发表于 2012-9-8 23:18:03

哦 哦 ,谢谢FDR大,好久没见哇
页: [1]
查看完整版本: 碰撞碰撞,矩形