[Cocos2d-x] Day 6 - Resource Work & Bullet Class, Manager Create
| cocos2D/2D Project 2016. 6. 12. 14:42<DAY> 2016.05.23 |
|||||||||
< WORK LIST > | |||||||||
<Class> Object_Hero.cpp & Object_Bullet, Bullet_Manager.cpp |
|||||||||
- Object_Bullet.cpp & Bullet_Manager.cpp Create |
|||||||||
- Resource Work |
|||||||||
- State Apply |
1 |
Object_Bullet.cpp & Bullet_Manager.cpp Create |
Shot에 이미지를 불러온다.
Object_Bullet.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | bool Object_Bullet::init() { if( !CCSprite::init() ) return false; this->addAnimation( CreateAnimation( "Resource/Character/SHOT/SHOT_%d.png" , "SHOT" , MAX_SHOT ) ); this->addAnimation( CreateAnimation( "Resource/Character/MIDDLES_SHOT/MIDDLE_SHOT_%d.png" , "MIDDLESSHOT" , MAX_MIDDLE_SHOT ) ); this->addAnimation( CreateAnimation( "Resource/Character/FULL_SHOT/FULL_SHOT_%d.png" , "FULLSHOT" , MAX_FULL_SHOT ) ); m_iState = SHOT; m_iType = 0; m_fFrame = 0; vec = ccp( 0, 0 ); this->schedule( schedule_selector( Object_Bullet::update )); return true; } | cs |
종류는
기본공격 ( SHOT )
중간 챠지 공격 ( MIDDLESSHOT )
풀 챠지 공격 ( FULLSHOT )
실질적으로 총알을 관리해주는 클래스다.
Bullet_Manager.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | void Bullet_Manager::init( Object_BackGround * _Bg ) { m_Bg = new Object_BackGround; m_Bg = _Bg; memset( m_pBullet, NULL, sizeof(m_pBullet) ); for( int i = 0; i < MAXBULLET; i++ ) { m_pBullet[i] = new Object_Bullet; m_pBullet[i]->init(); m_pBullet[i]->setScale( 2 ); m_pBullet[i]->setAnchorPoint( ccp( 0.5, 0 ) ); m_pBullet[i]->setPosition( CGPoint( -100, 0 ) ); m_pBullet[i]->setActive(false); m_Bg->addChild( m_pBullet[i] ); } } | cs |
BackGround를 매개변수로 가져와서 총알들을 초기화 해주는 동시에 addChild를 해준다.
요컨데, 플레이어가 공격 버튼을 누를때마다 총알을 만들어 주는 것이 아니라,
미리 정해진 숫자만큼 총알을 만들어 두고 총알의 좌표를 봐꾸어 쓰는 것이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | Object_Bullet * Bullet_Manager::AddBullet( CGPoint _pos, CGPoint _vec, int _Type, int _State ) { setPlayerShotType( _Type ); for(int i = 0; i < MAXBULLET; i++) { if( m_pBullet[i] == NULL ) continue; if( m_pBullet[i]->getActive() == FALSE ) { if( _State == JUMP_ATTACK || _State == DROP_ATTACK ) _pos.y += 25; _pos.x += 30 * _vec.x; if( _Type == 0 ) _pos.y += 130; else if( _Type == 1 ) _pos.y += 115; else if( _Type == 2 ) _pos.y += 0; if( _vec.x == 1 ) m_pBullet[i]->setFlipX( FALSE ); else m_pBullet[i]->setFlipX( TRUE ); m_pBullet[i]->setType( _Type ); m_pBullet[i]->setPosition( _pos ); m_pBullet[i]->setDirection( _vec ); m_pBullet[i]->setActive(TRUE); if( m_pBullet[i]->getIsVisible() == FALSE ) m_pBullet[i]->setIsVisible(true); return m_pBullet[i]; } } return NULL; } | cs |
공격 키를 누를때마다 총알의 설정을 다시 해주는 함수다.
2 | Resource Work |
START
FULL_SHOT
Work |
IDLE |
WALK |
ATTACK |
DASH |
JUMP |
DROP |
New START |
New JUMP_ATTACK |
New DROP_ATTACK |
New SHOT |
New MIDDLES_SHOT |
New FULL_SHOT |
3 | State Apply |
JUMP_ATTACK & DROP_ATTACK & SHOT
MIDDLES_SHOT
FULL_SHOT
State Apply |
IDLE |
WALK |
ATTACK |
DASH |
JUMP |
DROP |
New START |
New JUMP_ATTACK |
New DROP_ATTACK |
New DROP_ATTACK |
New SHOT |
New MIDDLES_SHOT |
New FULL_SHOT |
평 가 |
.난이도 : 쉬움 별 점 : ★☆☆☆☆ 한 마디: 어려운 점은 없었다. 리소스 작업은 여전히 고단하다. |
<Progress List> |
- Key Control |
- Box CollisionCheck |
- Camera Scroll |
- Player Resource Work |
- Player OutPut & Animation |
<Complete List> |
- Gravity Jump |
- MouseDrag Box Create |
- RayCast |
- File Input And Output |
- BackGround Output |
- Player Output |
- Bullet Output |
- Scroll Map Box |
- Player OutPut & Animation |
'cocos2D > 2D Project' 카테고리의 다른 글
[Cocos2d-x] Day 8 - Ladder (0) | 2016.06.13 |
---|---|
[Cocos2d-x] Day 7 - Slope Move (0) | 2016.06.13 |
[Cocos2d-x] Day 5 - Scroll Map Box & Player Resource Work (0) | 2016.06.12 |
[Cocos2d-x] Day 4 - BackGround & CameraScroll & File Input And Output (0) | 2016.06.09 |
[Cocos2d-x] Day 3 - MouseDrag Box Create & RayCast Collision (0) | 2016.06.08 |