adsense



JAVA/slick2d] 2D 슈팅게임 위치즈 스크램블 제작강좌 -step 14-

step 14. GameObject가 반드시 화면에 보이는 요소에만 사용할 수 있는 건 아닙니다.

아이템 나오고, 게임오버 되고 다시 시작 가능하고.
게임 다 만든 기분이네요.

지금까지 진행한 내용에서 제일 중요한 것은, 모든 존재를 클래스로 만들고, 객체를 생성해 게임 화면에 add 해 주기만 하면 돌아간다는데 있습니다.
그 GameObject가 반드시 화면에 보이는 요소에만 사용할 수 있는 건 아니라는 걸 여러번 강조한 것 치곤 응용이 없었는데요..
GameObject를 사용해서 게임을 지정된 순서대로 전개하는 방법-시나리오를 구현해 보겠습니다.

prefab에 scenario폴더를 추가하고, GameObject를 상속해 Scenario1 이라는 클래스를 만듭니다.



지역변수로
int cnt;
float enemyY;
Random rand = new Random();l
을 각각 추가해줍니다.


이건 이미지를 갖지 않는 GameObject입니다. 즉, 화면에 보여줄 것은 실질적으로는 없습니다.
때문에 좌표나 zorder등은 의미가 없어, 호출하게 되는 생성자는 public Scenario1(BasicScene scene) 입니다.


생성자에서 cnt를 0으로 초기화합니다.

다음, 기존에 GameScene의 update에 있던, '적 캐릭터 생성 테스트' 부분을 이곳의 update로 잘라 옮깁니다. (카피페x 컷페o)


- 네우로이 생성자에 넣어주던 this는 모두 scene으로 수정합니다.
- addChild의 앞에 scene. 을 붙여줍니다.
- update의 맨 마지막에 cnt++; 를 넣어줍니다.


그리고, GameScene에서는 enter함수의 맨 마지막에


이 내용을 넣어줍니다.


이제 게임을 실행시켜보면, 앞에서 만들었던 것과 다르지 않습니다.


여기서 핵심은 적을 등장시키는 알고리즘-시나리오도, 별개의 GameObject 객체로 만들어 등록할 수 있다는 것입니다.
같은 GameScene이라도, 이 시나리오 객체만 변경해주면 다른 내용을 전개할 수 있습니다.

이렇게 화면에-정확히는 어떤 객체로서- 존재하지만, 보이거나 플레이어가 간섭할 수는 없고, 게임 전반을 다루는 역할을 하는 부분도 별개의 객체로 정의해서 사용하는 것은 알만툴이나 유니티3D에서도 쉽게 볼 수 있는 편입니다.

게임 오버의 판단이나 게임 스코어 관리 등도 GameScene이 아니라 이렇게 별개의 객체로 옮겨서 처리할 수도 있습니다.

이제 다음 15단계로 마무리입니다. 기성 게임처럼 '정해진 시나리오 연출'과 '최후에 보스 등장', 그리고 사운드 등을 추가해서 게임의 꼴을 갖춰보도록 하겠습니다.



핑백

덧글

댓글 입력 영역


Books

Geek라이프

메가 드라이브 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

미소녀 일러스트 테크닉
B-은하, pen스케, 카와이 저/정유진 역

핵심강좌! Cocos2d-x
이재환 저

피규어의 교과서 레진 키트 & 도색 입문 편
후지타 시게토시 저/김정규 역
예스24 | 애드온2
일본서적 전문사이트 NEPIC