使用C ++和OpenGL进行简单3D游戏的碰撞检测

时间:2016-08-18 15:29:41

标签: c++ qt 3d collision-detection

我正在尝试使用C ++和OpenGL创建一个简单的3D游戏,我在Qt Creator中使用Windows。

到目前为止,我有一条可以在屏幕周围控制的鱼和一个可作为收集食物的球体。我试图包括碰撞检测,以便当鱼撞到食物时,食物将移动到另一个位置。我有一个围绕鱼的边界框和一个碰撞功能(鱼只能在X和Y方向移动):

void Window::BBoxCollision()
{
  float ext[6];
  ext[0]=ext[1]=(m_bbox->height());
  ext[2]=ext[3]=(m_bbox->width());
  ext[4]=ext[5]=(m_bbox->depth());

    GLfloat collisionLimitX;
    GLfloat collisionLimitY;

    {
      collisionLimitX=currentX+ext[2]+foodRadius;
      collisionLimitY=currentY+ext[0]+foodRadius;

      if(collisionLimitX <= 6 && collisionLimitY <= 6)
      {
        removeFood();
      }
    }
}

我的问题是currentXcurrentY变量是在我的Fish.h类中定义的,因为这是移动鱼的功能的地方,这意味着我无法访问我的Window.h void Fishy::move(float _x, float _y) { currentX=m_pos.m_x; currentY=m_pos.m_y; m_pos.m_x+=_x; m_pos.m_y+=_y; if(m_pos.m_x<=-s_xExtents || m_pos.m_x>=s_xExtents) { m_pos.m_x=currentX; } if(m_pos.m_y<=-s_yExtents || m_pos.m_y>=s_yExtents) { m_pos.m_y=currentY; } } 课程。 这是我在fish cpp中的移动功能:

>>> (a == 0).cumsum()
array([0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3])

有没有办法可以获得这些价值?或者我应该采取另一种方式来做这件事?

提前致谢!

0 个答案:

没有答案