我正在尝试使用图形包构建的两个矩形来实现 2D 碰撞检测。不幸的是,我开始认为我不理解编写处理此问题的函数所需的逻辑。
下面是我绘制一个小精灵和几个其他矩形的代码。我的精灵随着键盘输入移动。
我用过几本书,也尝试过 Nehe 等网站,虽然它们是非常好的教程,但它们似乎只直接处理 3D 碰撞。
有人可以向我展示一种使用上面的矩形实现碰撞检测的有效方法吗?我知道您需要比较每个对象的坐标。我只是不确定如何跟踪物体的位置,检查碰撞并在碰撞时停止移动。
我正在自学,现在似乎已经停止了好几天。我完全没有想法,搜索的谷歌页面比我想记住的要多。我很抱歉我的天真。
我将不胜感激任何建设性的意见和示例代码。谢谢你。
void drawSprite (RECT rect){
glBegin(GL_QUADS);
glColor3f(0.2f, 0.2f, 0.2f);
glVertex3f(rect.x, rect.y, 0.0);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(rect.x, rect.y+rect.h, 0.0);
glColor3f(0.2f, 0.2f, 0.2f);
glVertex3f(rect.x+rect.w, rect.y+rect.h, 0.0);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(rect.x+rect.w, rect.y, 0.0);
glEnd();
}
void drawPlatform (RECT rect){
glBegin(GL_QUADS);
glColor3f(0.2f,0.2f,0.0f);
glVertex3f(rect.x, rect.y, 0.0);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(rect.x, rect.y+rect.h, 0.0);
glColor3f(0.2f, 0.2f, 0.0f);
glVertex3f(rect.x+rect.w, rect.y+rect.h, 0.0);
glColor3f(1.0f, 1.0f, 0.0f);
glVertex3f(rect.x+rect.w, rect.y, 0.0);
glEnd();
}