我正在做一个opengl C ++停车场游戏。我想测试我的汽车对象的碰撞我相对于世界坐标的汽车的10个末端顶点。然后将它们分别存储在x和y的两个数组中作为x [10]和y [10],所以现在假设我需要一条障碍线,在该障碍线上车不能通过,并且结束坐标为(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);
}
}
以上是我的代码的一小部分...我没有得到准确的结果它不工作。 我是否为下键做了一个冲突功能?
答案 0 :(得分:1)
OpenGL不仅是数学,也不是几何,也不是碰撞检测,也不是物理库。这是一个绘图API,它只是将漂亮的图片绘制到屏幕上。周期。
您需要的任何其他东西必须自己实施或使用第三方库。