几天前,我刚刚开始使用 Win32 GUI 编程。我正在尝试制作一个简单的游戏,我需要在其中检测 2 个对象之间的碰撞。所以我用struct制作了我的角色RECT
为了检测它们是否发生碰撞,我使用了:
// Returns 1 if the point (x, y) lies within the rectangle, 0 otherwise
int is_point_in_rectangle(RECT r, int x, int y) {
if ((r.left <= x && r.right >= x) &&
(r.bottom <= y && r.top >= y))
return 1;
return 0;
}
// Returns 1 if the rectangles overlap, 0 otherwise
int do_rectangles_intersect(RECT a, RECT b) {
if ( is_point_in_rectangle(a, b.left , b.top ) ||
is_point_in_rectangle(a, b.right, b.top ) ||
is_point_in_rectangle(a, b.left , b.bottom) ||
is_point_in_rectangle(a, b.right, b.bottom))
return 1;
if ( is_point_in_rectangle(b, a.left , a.top ) ||
is_point_in_rectangle(b, a.right, a.top ) ||
is_point_in_rectangle(b, a.left , a.bottom) ||
is_point_in_rectangle(b, a.right, a.bottom))
return 1;
return 0;
}
我在这里发现了一个问题,它似乎适用于这种情况。但是这里的这种情况有一个小问题
有没有办法解决这个问题?我做错了吗?我应该尝试不同的方法吗?任何提示都会有所帮助。