<DAY> 2016.05.26 |
|||||||||
< WORK LIST > | |||||||||
<Class> Object_Enemy.cpp & Enemy_Manager.cpp |
|||||||||
- Enemy & Enemy_Effect |
|||||||||
- Resource Work |
|||||||||
- State Apply |
1 |
ENEMY & Enemy_Effect |
Object_Enemy.cpp
Enemy_Manager.cpp
Enemy_Bullet.cpp
EnemyBullet_Manager.cpp
추가 완료.
Object_Hero.cpp
Bullet_Manager.cpp
와 똑같은 부분이기 때문에 적용을 쉽게 했고
따로 설명하진 않겠다.
단지, 플레이어와 적 캐릭터의 차이는 크게 2가지 인데,
첫 번째는
직접 조종하는가?
혼자서 움직이는가?
의 차이가 있고
두 번째는
하나 인가?
여럿인가?
의 차이가 있다.
두 번째 부분같은 경우에는 Bullet_Manager와 다를 것이 없다.
이펙트 부분도 마찬가지다.
Bullet이랑 다를바가 없다.
2 | Resource Work |
ENEMY_IDLE
ENEMY_WALK
ENEMY_ATTACK
ENEMY_BULLET
ENEMY_BULLET_BOOM
WORK |
IDLE |
WALK |
ATTACK |
DASH |
JUMP |
DROP |
START |
JUMP_ATTACK |
DROP_ATTACK |
SHOT |
MIDDLES_SHOT |
FULL_SHOT |
WALK_ATTACK |
CHAGE_IDLE |
CHAGE_WALK |
CHAGE_DASH |
CHAGE_JUMP |
CHAGE_DROP |
CHAGE2_IDLE |
CHAGE2_WALK |
CHAGE2_DASH |
CHAGE2_JUMP |
CHAGE2_DROP |
LADDER_UP |
LADDER_DOWN |
WALL_DROP |
New ENEMY_IDLE |
New ENEMY_WALK |
New ENEMY_ATTACK |
New ENEMY_BULLET |
New ENEMY_BOOM |
3 | State Apply |
ENEMY ANIMATION
STATE APPLY |
IDLE |
WALK |
ATTACK |
DASH |
JUMP |
DROP |
START |
JUMP_ATTACK |
DROP_ATTACK |
SHOT |
MIDDLES_SHOT |
FULL_SHOT |
WALK_ATTACK |
CHAGE_IDLE |
CHAGE_WALK |
CHAGE_DASH |
CHAGE_JUMP |
CHAGE_DROP |
CHAGE2_IDLE |
CHAGE2_WALK |
CHAGE2_DASH |
CHAGE2_JUMP |
CHAGE2_DROP |
LADDER_UP |
LADDER_DOWN |
WALL_DROP |
New ENEMY_IDLE |
New ENEMY_WALK |
New ENEMY_ATTACK |
New ENEMY_BULLET |
New ENEMY_BOOM |
평 가 |
.난이도 : 보통 별 점 : ★★★☆☆ 한 마디: 기술적 난이도는 없고 그냥 할 일이 많았다. |
<Progress List> |
- Camera Scroll |
- Player Resource Work |
- Player OutPut & Animation |
- New Enemy - <Complete> |
- New Enemy_Effect_Boom - <Complete> |
<Complete List> |
- New Key Control |
- Gravity Jump |
- MouseDrag Box Create |
- New Box CollisionCheck |
- RayCast |
- File Input And Output |
- BackGround Output |
- Player Output |
- Bullet Output |
- Scroll Map Box |
- New Player OutPut & Animation |
- Slope Move |
- Ladder |
- Wall_Drop |
- New Enemy |
- New Enemy_Effect_Boom |
'cocos2D > 2D Project' 카테고리의 다른 글
[Cocos2d-x] Day 11 - Enemy CollisionCheck & Effect (1) | 2016.06.15 |
---|---|
[Cocos2d-x] Day 9 - WALL_DROP (0) | 2016.06.14 |
[Cocos2d-x] Day 8 - Ladder (0) | 2016.06.13 |
[Cocos2d-x] Day 7 - Slope Move (0) | 2016.06.13 |
[Cocos2d-x] Day 6 - Resource Work & Bullet Class, Manager Create (0) | 2016.06.12 |
<DAY> 2016.05.25 |
|||||||||
< WORK LIST > | |||||||||
<Class> Object_Hero.cpp |
|||||||||
- WALL_DROP |
|||||||||
- Resource Work |
|||||||||
- State Apply |
1 |
WALL_DROP |
박스의 옆면의 충돌 중일 때 중력에 의해 떨어지는 힘을 0으로 만들고,
m_fAccelerator = 0;
점프키가 눌리지 않았다면 플레이어의 y값 좌표를 내려준다.
반대로 충돌중이 아니라면( NULL 이라면 ) 상태를 DROP으로 바꿔준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | case WALL_DROP: { if( ST::call()->BM.CollisionCheck( DropSet(), BOX ) == NULL ) { m_iState = DROP; if( vec.x == 1 ) pos.x -= 20.f; else pos.x += 20.f; } else { if( ST::call()->BM.Raycast( pos, CGPoint(0,-1), &Hit, m_fAccelerator ) ) m_iState = WALK; if( !m_bJumpKeyPress ) pos.y -= 150 * dt; m_fAccelerator = 0; } break; } | cs |
점프 키 제어.
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | if(GetAsyncKeyState('C') && m_bJumpKeyPress == FALSE ) { if( m_iState != DROP && m_iState != JUMP && m_iState != CHAGE_JUMP && m_iState != CHAGE2_JUMP && m_iState != CHAGE_DROP && m_iState != CHAGE2_DROP && m_iState != JUMP_ATTACK && m_iState != DROP_ATTACK ) { m_bJumpKeyPress = TRUE; // ST::call()->SM.play(SND_JUMP); if( m_bAttackDown ) m_iState = CHAGE_JUMP; else if( m_bAttackDown && m_fAttackTimeDlay >= 2.4f ) m_iState = CHAGE2_JUMP; else m_iState = JUMP; // 대시 점프 시 점프 높이 상승. if( m_iPrevState == DASH || m_iPrevState == CHAGE_DASH || m_iPrevState == CHAGE2_DASH ) { m_fAccelerator = JUMPPOWER + DASH_JUMP_POWER; m_bMoveSpeedIncrease = TRUE; } else if( m_iPrevState == WALL_DROP ) { // ST::call()->SM.play( SND_WALL_JUMP ); m_fAccelerator = JUMPPOWER + 100; if( vec.x == -1 ) { pos.x += 45.f; pos.y += 10.f; } else { pos.x -= 45.f; pos.y += 10.f; } } else m_fAccelerator = JUMPPOWER; } } else if(!GetAsyncKeyState('C')) m_bJumpKeyPress = FALSE; | cs |
2 | Resource Work |
WALL_DROP
WORK |
IDLE |
WALK |
ATTACK |
DASH |
JUMP |
DROP |
START |
JUMP_ATTACK |
DROP_ATTACK |
SHOT |
MIDDLES_SHOT |
FULL_SHOT |
WALK_ATTACK |
CHAGE_IDLE |
CHAGE_WALK |
CHAGE_DASH |
CHAGE_JUMP |
CHAGE_DROP |
CHAGE2_IDLE |
CHAGE2_WALK |
CHAGE2_DASH |
CHAGE2_JUMP |
CHAGE2_DROP |
LADDER_UP |
LADDER_DOWN |
New WALL_DROP |
3 | State Apply |
WALL_DROP
STATE APPLY |
IDLE |
WALK |
ATTACK |
DASH |
JUMP |
DROP |
START |
JUMP_ATTACK |
DROP_ATTACK |
SHOT |
MIDDLES_SHOT |
FULL_SHOT |
WALK_ATTACK |
CHAGE_IDLE |
CHAGE_WALK |
CHAGE_DASH |
CHAGE_JUMP |
CHAGE_DROP |
CHAGE2_IDLE |
CHAGE2_WALK |
CHAGE2_DASH |
CHAGE2_JUMP |
CHAGE2_DROP |
LADDER_UP |
LADDER_DOWN |
New WALL_DROP |
평 가 |
.난이도 : 보통 별 점 : ★★★☆☆ 한 마디: 플레이어의 상태가 많아서 조절하기가 조금 난해 했다. |
<Progress List> |
- Key Control |
- Box CollisionCheck |
- Camera Scroll |
- Player Resource Work |
- Player OutPut & Animation |
- New Wall_Drop - <Complete> |
<Complete List> |
- Gravity Jump |
- MouseDrag Box Create |
- RayCast |
- File Input And Output |
- BackGround Output |
- Player Output |
- Bullet Output |
- Scroll Map Box |
- Player OutPut & Animation |
- Slope Move |
- Ladder |
- New Wall_Drop |
'cocos2D > 2D Project' 카테고리의 다른 글
[Cocos2d-x] Day 11 - Enemy CollisionCheck & Effect (1) | 2016.06.15 |
---|---|
[Cocos2d-x] Day 10 - Enemy & Enemy_Effect (0) | 2016.06.14 |
[Cocos2d-x] Day 8 - Ladder (0) | 2016.06.13 |
[Cocos2d-x] Day 7 - Slope Move (0) | 2016.06.13 |
[Cocos2d-x] Day 6 - Resource Work & Bullet Class, Manager Create (0) | 2016.06.12 |
<DAY> 2016.05.24 |
|||||||||
< WORK LIST > | |||||||||
<Class> Object_Hero.cpp |
|||||||||
- Ladder |
|||||||||
- Resource Work |
|||||||||
- State Apply |
1 |
Ladder |
주인공이 사다리를 타기 위해서
물리적으로 충돌하지 않는 박스를 만들어
주인공이 그 박스에 다으면 사다리가 근처에 있는것으로 간주해
↑↓버튼을 누를수 있게 하였다.
물리적인 충돌을 Collision이라고 한다면
그 반대는 Trigger라고 보면 된다.
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | if(GetAsyncKeyState(VK_UP) ) { if( m_bLadder ) { m_iState = LADDER_UP; pos.y += MoveSpeed; vec.y = 1; if( ST::call()->BM.LadderRaycast( pos, CGPoint( 0, 1 ), &Hit, 100 ) ) pos.x = Hit.ObTarget->rc.origin.x + ( Hit.ObTarget->rc.size.width / 2 ); m_fLaderUpTime += dt; static bool LaderPressUp = FALSE; if( !LaderPressUp && m_fLaderUpTime > 0.1f ) { LaderPressUp = TRUE; m_fLaderUpTime = 0; m_iLadderUpFrame++; if( m_iLadderUpFrame > 4 ) m_iLadderUpFrame = 1; } LaderPressUp = FALSE; } } if(GetAsyncKeyState(VK_DOWN) ) { if( ST::call()->BM.CollisionCheck( CGPoint( pos.x, pos.y - 2.f ), LADDER ) != NULL && !m_bLadder ) { this->setDisplayFrame( ChangeAni( LADDER_DOWN ),(int)m_fFrame % 5 ); pos.y = pos.y - 5.f; } if( m_bLadder ) { m_iState = LADDER_DOWN; pos.y -= MoveSpeed; vec.y = -1; if( ST::call()->BM.LadderRaycast( pos, CGPoint( 0, -1 ), &Hit, 100 ) ) pos.x = Hit.ObTarget->rc.origin.x + ( Hit.ObTarget->rc.size.width / 2 ); m_fLaderDownTime += dt; static bool LaderPressDown = FALSE; if( m_fLaderDownTime > 0.1f && !LaderPressDown ) { LaderPressDown = TRUE; m_fLaderDownTime = 0; m_iLadderDownFrame++; if( m_iLadderDownFrame > 4 ) m_iLadderDownFrame = 1; } LaderPressDown = FALSE; } } | cs |
기본적으로 사다리가 아니면 ↑↓키를 입력해도 아무런 일도 일어나지 않는다.
밑의 소스코드는 플레이어가 사다리에 올라가거나 내려가는 상태일때의 소스다.
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 | case LADDER_UP: { if( ST::call()->BM.LadderRaycast( pos, CGPoint( 0, 1 ), &Hit, 100 ) ) { this->setDisplayFrame( ChangeAni( m_iState ),(int)m_fFrame % m_iLadderUpFrame ); if( ST::call()->BM.CollisionCheck( pos, LADDER ) != NULL && ST::call()->BM.CollisionCheck( CGPoint( pos.x, pos.y + 40.f ), LADDER ) == NULL ) { pos.y = pos.y + 40.f; m_iState = IDLE; } else if( ST::call()->BM.CollisionCheck( CGPoint( pos.x, pos.y + 20.f ), LADDER ) == NULL ) { this->setDisplayFrame( ChangeAni( m_iState ),(int)m_fFrame % 5 ); this->setDisplayFrame( ChangeAni( m_iState ),(int)m_fFrame % 6 ); } } break; } case LADDER_DOWN: { ST::call()->BM.LadderRaycast( CGPoint( pos.x, pos.y + 30 ), CGPoint( 0, -1 ), &Hit, 100 ); this->setDisplayFrame( ChangeAni( m_iState ),(int)m_fFrame % m_iLadderDownFrame ); if( ST::call()->BM.CollisionCheck( CGPoint( pos.x, pos.y + 30 ), LADDER ) == NULL ) { m_iState = DROP; } break; } | cs |
2 | Resource Work |
LADDER_UP
LADDER_DOWN
WORK |
IDLE |
WALK |
ATTACK |
DASH |
JUMP |
DROP |
START |
JUMP_ATTACK |
DROP_ATTACK |
SHOT |
MIDDLES_SHOT |
FULL_SHOT |
WALK_ATTACK |
CHAGE_IDLE |
CHAGE_WALK |
CHAGE_DASH |
CHAGE_JUMP |
CHAGE_DROP |
CHAGE2_IDLE |
CHAGE2_WALK |
CHAGE2_DASH |
CHAGE2_JUMP |
CHAGE2_DROP |
New LADDER_UP |
New LADDER_DOWN |
3 | State Apply |
LADDER_UP & LADDER_DOWN
STATE APPLY |
IDLE |
WALK |
ATTACK |
DASH |
JUMP |
DROP |
START |
JUMP_ATTACK |
DROP_ATTACK |
SHOT |
MIDDLES_SHOT |
FULL_SHOT |
WALK_ATTACK |
CHAGE_IDLE |
CHAGE_WALK |
CHAGE_DASH |
CHAGE_JUMP |
CHAGE_DROP |
CHAGE2_IDLE |
CHAGE2_WALK |
CHAGE2_DASH |
CHAGE2_JUMP |
CHAGE2_DROP |
New LADDER_UP |
New LADDER_DOWN |
평 가 |
.난이도 : 보통 별 점 : ★★☆☆☆ 한 마디: 의외로 사다리는 쉬웠다. |
<Progress List> |
- Key Control |
- Box CollisionCheck |
- Camera Scroll |
- Player Resource Work |
- Player OutPut & Animation |
- New Ladder - <Complete> |
<Complete List> |
- Gravity Jump |
- MouseDrag Box Create |
- RayCast |
- File Input And Output |
- BackGround Output |
- Player Output |
- Bullet Output |
- Scroll Map Box |
- Player OutPut & Animation |
- Slope Move |
'cocos2D > 2D Project' 카테고리의 다른 글
[Cocos2d-x] Day 10 - Enemy & Enemy_Effect (0) | 2016.06.14 |
---|---|
[Cocos2d-x] Day 9 - WALL_DROP (0) | 2016.06.14 |
[Cocos2d-x] Day 7 - Slope Move (0) | 2016.06.13 |
[Cocos2d-x] Day 6 - Resource Work & Bullet Class, Manager Create (0) | 2016.06.12 |
[Cocos2d-x] Day 5 - Scroll Map Box & Player Resource Work (0) | 2016.06.12 |