我正在尝试使用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();
}
}
}
我的问题是currentX
和currentY
变量是在我的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])
有没有办法可以获得这些价值?或者我应该采取另一种方式来做这件事?
提前致谢!