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 색으로 표시됨.
'Programming > Cocos2D-X' 카테고리의 다른 글
랜더타겟? 메모리 관리? CCSpriteBatchNode!! (0) | 2015.04.24 |
---|---|
내가 선택한 타일 그리기 그리고 각에 맞춰서 타일 그리기 (0) | 2015.04.23 |
화면 스크롤 만들기 (0) | 2015.04.21 |
Raycast 만들기 (3) | 2015.04.20 |
CollisionBlock 마우스 클릭으로 생성하기 (0) | 2015.04.20 |
캐릭터 리소스 변경작업 (0) | 2015.04.20 |
CollisionBlockd 만들기 (0) | 2015.04.18 |
블로그 시작 (0) | 2015.04.17 |