我目前正在制作一个非常简单的 Sprite 到墙壁碰撞检测程序,如果我的火柴人碰到它,它会停在墙壁上。我的代码运行良好,但问题是我的火柴人精灵不会停在墙的左侧和顶部(在这种情况下,仅左侧和顶部的屏幕高度和屏幕宽度)。这是我的代码,你能找出问题出在哪里,我该如何解决。
bool check_CollisionWall(oSprite* Sprite1)
{
//top left
if(Sprite1->m_vPosition.x <= 0 && Sprite1->m_vPosition.x + Sprite1->m_nFrameWidth >= SCREEN_WIDTH)
{
if(Sprite1->m_vPosition.y <= 0 && Sprite1->m_vPosition.y + Sprite1->m_nFrameHeight >= SCREEN_HEIGHT)
{
return true;
}
}
//top right
if(Sprite1->m_vPosition.x+Sprite1->m_nFrameWidth > 0 && Sprite1->m_vPosition.x+Sprite1->m_nFrameWidth >= SCREEN_WIDTH)
{
if(Sprite1->m_vPosition.y <= 0 && Sprite1->m_vPosition.y+Sprite1->m_nFrameHeight >= SCREEN_HEIGHT)
{
return true;
}
}
//bottom left
if( Sprite1->m_vPosition.x > 0 && Sprite1->m_vPosition.x + Sprite1->m_nFrameWidth <= SCREEN_WIDTH )
{
if( Sprite1->m_vPosition.y + Sprite1->m_nFrameHeight > 0 && Sprite1->m_vPosition.y + Sprite1->m_nFrameHeight <= SCREEN_HEIGHT )
{
return true;
}
}
//bottom right
if(Sprite1->m_vPosition.x + Sprite1->m_nFrameWidth > 0 && Sprite1->m_vPosition.x + Sprite1->m_nFrameWidth <= SCREEN_WIDTH)
{
if(Sprite1->m_vPosition.y + Sprite1->m_nFrameHeight > 0 && Sprite1->m_vPosition.y + Sprite1->m_nFrameHeight <= SCREEN_HEIGHT)
{
return true;
}
}
return false;
}