私は現在、非常に単純なスプライトから壁への衝突検出プログラムを作成しています。壁に触れていると、棒人間が壁で停止します。私のコードは正常に実行されますが、問題は私のバッター スプライトが壁の左側と上部で停止しないことです (この場合、左側と上部のみの画面の高さと画面の幅です)。これが私のコードです。問題がどこにあるのか、どのように解決すればよいかを理解できますか。
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;
}