CollisionBlock_Manager는 CollisionBlock들을 관리해준다.

 

#define  MAX_COLLISIONBLOCK 30 //최대값을 성절해준다

 

class CollisionBlock_Manager : public CCSprite{

protected:

CollisionBlock* m_pBlock[MAX_COLLISIONBLOCK];

 

public:

void init();

CollisionBlock* createBlock(CGRect rc);

bool CollisionBlockCheck(CGPoint pos);

 

};

메인 씬에서 for로 MAX만큼 돌려주면 CollisionBlock_Manager->createBlock(rc)

CollisionBlock가 나타난다.

 

CollisionBlock* CollisionBlock_Manager::createBlock(CGRect rc)

{

for(int i = 0; i < MAX_COLLISIONBLOCK; i++){

if( m_pBlock[i] != NULL )continue;

m_pBlock[i] = new CollisionBlock;

m_pBlock[i]->initWithSize( rc.size );

m_pBlock[i]->setPosition( ccp(rc.origin.x, rc.origin.y) );

return m_pBlock[i];

}

return NULL;

}

 

bool CollisionBlock_Manager::CollisionBlockCheck(CGPoint pos)

{

for(int i = 0; i < MAX_COLLISIONBLOCK; i++){

if( m_pBlock[i]->ptnRect(pos) ){

m_pBlock[i]->setColor(ccc3(255,0,0));

return true;

}

else

m_pBlock[i]->setColor(ccc3(255,255,255));

}

return false;

}

 

void CollisionBlock_Manager::init()

{

memset(m_pBlock, NULL, sizeof(m_pBlock));

 

}

드디어 블럭을 깔았다.

이런 젠장...

bool CollisionBlock_Manager::CollisionBlockCheck(CGPoint pos)

{

for(int i = 0; i < MAX_COLLISIONBLOCK; i++){

if( m_pBlock[i]->ptnRect(pos) ){

m_pBlock[i]->setColor(ccRED);

}

else{

m_pBlock[i]->setColor(ccWHITE);

}

}

return false;

 

}

리턴 트루를 지웠더니 잘되네

캐릭터가 CollisionBlock위에 있다면 0x000000ff 색으로 표시됨.

캐릭터가 CollisionBlock위에 없다면 0x00ffffff 색으로 표시됨.

반응형