본문 바로가기

IT 번역/Cocos2d-x 메뉴얼[manual] 번역

시퀀스와 스폰 | Sequences and Spawns

스프라이트[Sprite] 객체를 화면에서 움직이는 것으로 게임을 만들때 필요한 모든 것이 갖춰줬다, 그죠? 그럴리가요. 여러개의 액션[Action]을 실행하는 건 안필요해요? 그래요, Cocos2d-x에도 이런 여러개의 액션[Action]을 실행하는 방법이 있습니다. 사실은 한가지 방법이 아니라 몇가지 방법이 있지요.

시퀀스[Sequence]라는 말 자체에서 연상되는 것처럼, 이 시퀀스[Sequence]라는 것은, 지정한 순서대로 실행하는 여러개의 액션[Action] 묶음을 말합니다. 시퀀스[Sequence]를 역방향으로 실행하고 싶으세요? 걱정마세요, Cocos2d-x는 추가 작업없이 역방향 실행도 가능합니다.

자, 스프라이트[Sprite]를 부드럽게 움직이기 위한 시퀀스[Sequence] 예제를 한번 보죠:

이 시퀀스[Sequence]는 만들기 쉽습니다:

auto mySprite = Node::create();

// 좌표 <50, 10>로 2초안에 이동합니다.
// move to point 50,10 over 2 seconds
auto moveTo1 = MoveTo::create(2, Vec2(50,10));

// 현재 위치에서 2초동안에 우측으로 100 픽셀, 위쪽으로 10 픽셀을 이동합니다.
// move from current position by 100,10 over 2 seconds
auto moveBy1 = MoveBy::create(2, Vec2(100,10));

// 좌표 <150, 10>로 2초안에 이동합니다.
// move to point 150,10 over 2 seconds
auto moveTo2 = MoveTo::create(2, Vec2(150,10));

// 딜레이를 생성합니다.
// create a delay
auto delay = DelayTime::create(1);

mySprite->runAction(Sequence::create(moveTo1, delay, moveBy1, delay.clone(),
moveTo2, nullptr));

이 예제는 시퀀스[Sequence]를 순서대로 실행합니다. 근데 말이죠, 모든 액션[Action]을 동시에 수행하려면 어쩌죠? Cocos2d-x는 이 기능도 지원합니다. 이걸 스폰[Spawn]이라고 부르죠. 스폰[Spawn]은 지정된 모든 액션[Action]들을 동시에 수행합니다. 어떤 액션[Action]은 다른 액션[Action]들 보다 좀더 시간이 걸릴 수도 있어요, 그럴 경우에는 모든 액션[Action]이 동시에 끝나진 않습니다.

auto myNode = Node::create();

auto moveTo1 = MoveTo::create(2, Vec2(50,10));
auto moveBy1 = MoveBy::create(2, Vec2(100,10));
auto moveTo2 = MoveTo::create(2, Vec2(150,10));

myNode->runAction(Spawn::create(moveTo1, moveBy1, moveTo2, nullptr));

왜 스폰 액션[Spawn action]이 필요하냐구요? 타당한 이유가 있긴하냐구요? 있지요! 예를 들어서요, 메인 캐릭터가 파워업을 할 때 여러개의 액션[Action]을 해야 하면 어떻게 하실거에요? 아니면 게임 레벨 마지막에 보스를 쓰러트리고 나서, 여러개의 액션을 수행해야지만 그 레벨이 끝날 수 있다고 게임을 설계하실 수도 있죠.