<brickgame> 2. 충돌 처리는 어떻게 할 것인가

sungjin6576·2022년 4월 20일
0

brickgame

목록 보기
2/4

블록 깨기 게임에서는 공과 발판, 공과 블록이 충돌하게 된다
이 때 두 요소의 충돌을 판단하는 함수를 만들어본다

간단하게 사각형 두개가 있다고 가정하고 서로 충돌하지 않는 경우의 수를 생각해본다
rectA의 좌변이 rectB의 우변보다 우측에 있는경우

A의 우변이 B의 좌변보다 좌측에 있는 경우

A의 상단이 B의 밑변보다 아래 있는 경우

A의 밑변이 B의 상단보다 위에 있는 경우

위의 경우 중 하나라도 해당된다면 A와 B는 충돌할 수 없다
다르게 표현하면 위의 조건을 모두 만족하지 않아야 충돌한다
따라서 충돌판별식은 다음과 같다

function isCollisionRectToRect(rectA,rectB)
{
    if (rectA.left > rectB.right ||
        rectA.right < rectB.left ||
        rectA.top > rectB.bottom ||
        rectA.bottom < rectB.top)
        {
            return false;
        }
    return true;
}

이제 우리는 충돌 시 어떤 행동을 해줄지 바꿀 수 있게 되었다
만약 ball 이라는 객체와 paddle이라는 객체가 충돌 시 ball의 y 운동방향을 바꾸고 싶다면

if(isCollisionRectToRect(ball,paddle))
{
  arcMvDirY = -arcMvDirY;
}

0개의 댓글