我正在做一个opengl C++停车场游戏。我想测试我的汽车对象的碰撞,我有 10 个汽车相对于世界坐标的末端顶点。并将它们分别存储在 x 和 y 的两个数组中,分别为 x[10] 和 y[10],所以现在假设我需要有一条障碍线,汽车不应该通过,并且 ve 结束坐标为 (x1, y1) 和 (x2, y2),其中 y1=y2...我应该怎么做?
我试过这样做
int collision()
{
for(i=0;i<=10;i++)
{
if( y[i]>=y1)
{printf("a");
return 1;}}
else return 0;
}
if( key == GLUT_KEY_UP) // up
{
glTranslatef(0.0,.1,0.0);
c=collision();
if(c==1)
goto l1;
glTranslatef(0.0,.1,0.0);
c=collision();
if(c==1)
goto l1;
glTranslatef(0.0,.1,0.0);
c=collision();
if(c==1)
goto l1;
glTranslatef(0.0,.1,0.0);
c=collision();
if(c==1)
goto l1;
glTranslatef(0.0,.1,0.0);
c=collision();
if(c==1)
{l1:
glTranslatef(0,-0.5,0);
}
}
以上是我代码的一小部分...我没有得到准确的结果,它不起作用。我是否为下键执行其他碰撞功能?
OpenGL既不是数学,也不是几何,也不是碰撞检测,也不是物理库。这是一个绘图API,它所做的只是将漂亮的图片绘制到屏幕上。时期。
您需要的任何其他内容都必须自己实现或使用第三方库。