- 음악과 나 -/『 짬 통 』

충돌체크

noon2dy 2006. 4. 17. 13:08

 

2004-12-03 오후 8:24:56   /  번호: 9985  / 평점:  (-) category: Window Programming  /  조회: 522 
 충돌체크 방법????????????????? -必- / feelview  
-必-님께 메시지 보내기  -必-님을 내 주소록에 추가합니다.  -必-님의 블로그가 없습니다  
허접 하나마 간단한 게임하나를 만드는 중입니다. 

선배한테서 간단한 게임 소스를 하나 받았는데 소스가 하나도 없네요

대략 이해는 가는데 정확하게 알수가 없어 부탁 드립니다.

제가 만들 게임은 위에서 아래로 떨어지는 아이템(?)을 먹는 게임인데 

화면 전체에서 X축과 Y축을  검사하여 충돌이 있는지 검사를 해야 하는데

이 소스는 맨 아래쪽에서만 좌,우로 만 움직이네요 


    for(int i = 0; i <5; i++){  
        if(moveCheck[i]){
                                            //(떨어지는 아이템,X위치,Y위치, 그림영역)
            m_pDD->BltBMP(m_cp, 32 + (128 * i), count[i], &rect2);
            count[i] = count[i] + weight[i];
        }
        if(count[i] >= (480-64)){ // 그림이 마지막까지 나타나는 위치
            moveCheck[i] = FALSE;
            count[i] = 0;
        }

    }

    for(i = 0; i < 5; i++){
        
            if(moveCheck[i]){
            if(count[i] > 410){
                posX = 32 + (128 * i);

     
              // 이 부분이 충돌 체크 같은데  어떻게 해야할지...
              // X축만 충돌 체크가 되어 있는데 Y축과 같이 체크하는 방법은????
                if((posX <= m_x && posX + 60 >= m_x) || (posX <= m_x+60 && posX  + 60 >= m_x + 60)){
                
                
                    point = point + 100;
                    m_snd.PlaySound();
                    
                    m_pDD->sum = m_pDD->sum + 100;
                    moveCheck[i] = FALSE;
                    count[i] = 0;

                
                }
                
            }
        }
    }


  위와 비슷한 방법으로 충돌체크 방법좀 가르쳐 주세요

정말로 어떻게 해야 할지 모르겠습니다. 시간도 얼마 없는데 제발 프리즈  ㅡ.ㅜ
이 글에 평점 주기:  
  2004-12-06 오후 6:01:54   /  번호: 9993  / 평점:  (-)  
  Re: 충돌체크 방법 [MVP]진용철 / anecia  
[MVP]진용철님께 메시지 보내기  [MVP]진용철님을 내 주소록에 추가합니다.  [MVP]진용철님의 블로그가 없습니다  

 

두 객체의 사각영역의 교집합을 구하면 됩니다.

 

객체1의 이미지크기(넓이 w1, 높이 h1), 객체2의 이미지크기(넓이 w2, 높이 h2)를 우선 알고 있어야 하고요.

객체1의 left, top의 좌표가 x1, y1이고 객체2의 left, top의 좌표가 x2, y2 라면

 

 

if ( x1 > (x2 + w2) || (x1 + w1) < x2 )

   return FALSE;

if ( y1 > (y2 + h2) || (y1 + h1) < y2 )

   return FALSE;

 

// 객체 충돌!!!

 

return TRUE;

데브피아에서.

 

 

 

아니면. IntersectRect( ).. 사용.