저는 현재 매우 간단한 Sprite to Spice 충돌 감지 프로그램을 만들고 있습니다. 스틱 맨이 만지면 벽에 멈추게됩니다. 내 코드는 정상적으로 실행되지만 문제는 내 stickman 스프라이트가 왼쪽과 위 벽 (이 경우 왼쪽과 위쪽 만의 화면 높이와 화면 너비)에서 멈추지 않는다는 것입니다. 여기 내 코드가 있습니다, 당신은 문제가 어디인지 알아낼 수 있습니까? 어떻게 해결합니까?SDL 충돌 감지
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;
}
내가 착각 할 수 있지만, 코드가 수직 경계와 수평 경계 모두에 도달하거나 동시에 초과하는 경우와 같이 충돌을 정의하기 위해 구성 될 것으로 보인다. 수직 경계가 초과되었거나 수평 경계가 초과되면 충돌 조건이 충족됩니까? –