#define CRASH TRUE #define NOT_CRASH FALSE
enum { JINX, JINX_BOOM, ENEMY1, MY_BULLET, E_BULLET, ENDTYPE, };
// 상태위치 typedef struct _status { unsigned int uiPos_X; // X 좌표 unsigned int uiPos_Y; // Y 좌표 unsigned int uiSizeX; // X 크기 unsigned int uiSizeY; // Y 크기 }STATUS;
STATUS stStats[ENDTYPE] = { {0,0,CHAR_X_SIZE,CHAR_Y_SIZE}, {0,0,BOOM_X_SIZE,BOOM_Y_SIZE}, {0,0,MINION1_X_SIZE,MINION1_Y_SIZE}, {0,0, 4, 8}, {0,0, 4, 8}, }; |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 구조체 부분 // 충돌체크 int UnitCrash(const STATUS *stpUNIT1, const STATUS *stpUNIT2) { //X1 = stpUNIT1->uiPos_X //X2 = stpUNIT1->uiPos_X + stpUNIT1->uiSizeX //Y1 = stpUNIT1->uiPos_Y //Y2 = stpUNIT1->uiPos_Y + stpUNIT1->uiSizeY //XX1 = stpUNIT2->uiPos_X //XX2 = stpUNIT2->uiPos_X + stpUNIT1->uiSizeX //YY1 = stpUNIT2->uiPos_Y //YY2 = stpUNIT2->uiPos_Y + stpUNIT1->uiSizeY // 충돌 안하는 조건 // 캐릭터의 상단과 총알의 하단이 부딪힐 확률 if( stpUNIT1->uiPos_Y > stpUNIT2->uiPos_Y + stpUNIT2->uiSizeY ) { return NOT_CRASH; }
// 캐릭터의 하단과 총알의 상단이 부딪힐 확률 if( stpUNIT1->uiPos_Y + stpUNIT1->uiSizeY < stpUNIT2->uiPos_Y ) { return NOT_CRASH; }
// 캐릭터의 왼쪽과 총알의 오른쪽이 부딪힐 확률 if( stpUNIT1->uiPos_X > stpUNIT2->uiPos_X + stpUNIT2->uiSizeX) { return NOT_CRASH; }
// 캐릭터의 오른쪽과 총알의 왼쪽이 부딪힐 확률 if( stpUNIT1->uiPos_X + stpUNIT1->uiSizeX < stpUNIT2->uiPos_X ) { return NOT_CRASH; } return CRASH; } |