안드로이드 게임 만들기
안드로이드 게임 만들기 |
■ 지난번까지 해서 플레이어의 비행기와 배경까지 만들어 봤으니 이번에는 적을 만들어 보겠습니다. 슈팅 게임에서 적의 종류가 하나이면 재미가 없을테니까요 3가지 종류의 적을 만들겠습니다.
여러 적들의 슈퍼 클래스가 될 Enemy클래스를 작성하고, 애니메이션이 포함되어 있으니까 SpriteAnimation클래스를 상속 받겠습니다.
■ 적들은 어떤 특징이 있을까요? 먼저 미사일 한방에 죽는 적도 있겠고, 그렇지 않는 적도 있을겁니다. 때문에 hp변수가 필요하고 종류별로 이동 속도를 다를 수 있으니 speed변수도 필요할것입니다. 그리고 적의 행동을 보면 미사일을 발사하고 각자 움직이는 패턴이 다를 것입니다. 이런 내용들을 참고해서 변수를 선언하고 메서드를 만들겠습니다.
■ 적들이 상속받아서 사용할 클래스의 틀이 갖춰진것 같네요. 이제 적들을 종류별로 구현해 보겠습니다. 세가지 종류로 만들었구요.
■ 노란색은 체력이 약한 대신 이동속도를 빠르게 하고 녹색은 체력은 보통이고 이동 속도가 느립니다. 보라색은 체력은 강하고 이동속도는 매우 느리게 설정하겠습니다.
이와같은 설정을 토대로 적 클래스를 제작하겠습니다. Enemy 1 ~3번으로 만들겠습니다.
첫번째 클래스를 만들어서 기본으로 사용할 이미지가 정해져 있으니 비트멥을 인자로 받을 필요없이 생성자에서 비트맵을 불러와서 넘겨주고 hp와 speed수치를 지정해줍니다. 다음으로 스프라이트 애니메이션에서 기본적인 정보를 설정하는 InitSpriteData메서드를 호출해서 적 캐릭터의 기본 스프라이트 애니메이션 정보를 넣어줍니다. 또한 Updage(long)메서드를 상속받아서 제작합니다.
■ 이제 GameState클래스에서 이 클래스를 추가해서 화면에 나타나게 해줍니다.
■ 여기까지 하고 게임을 실행을 해보겠습니다.
■ 이제 적의 이동을 처리 해보겠습니다. 적은 아래쪽으로 이동하는데 같은 패턴으로 이동하면 밋밋하니까요. 내려오다가 (1)어느 지점부터 갑자기 빨라진다거나, 직선으로 내려오다가 어느 지점부터 대각선방향으로 (2)오른쪽, (3)왼쪽으로 움직이게 해보겠습니다.
■ 이처럼 세가지 패턴을 상수로 만들어서 슈퍼클래스인 Enemy에 패턴 종류를 담을 멤버 변수를 추가하고 Move()메서드에 이동패턴에 따른 움직임을 구현하겠습니다.
■ 이제 적의 이동 패턴을 구현해 보겠습니다. 구현할 패턴을 살펴보면 모두 중간지점을 기준으로 이동방식이 변하게 되는데요. 화면 길이의 1/2지점에서 패턴이 변하게 합니다. 지금 현재 사용중인 AVD의 화면의 길이가 800이므로 400지점에서 패턴이 바뀌도록 설정해 보겠습니다.
■ 위와 같이 작성을 하고 Enemy의 Update메서드에서 Move()메서드를 호출합니다.
■ 이제 Enemy1클래스의 생성자에서 movetype을 바꿔가면서 하나씩 테스트를 해보겠습니다.
■ 실행을 해보면 세가지 패턴다 정상적으로 작동이 됩니다. 아래 동영상은 내려오다가 일정한 구간에서 오른쪽 대각선으로 이동하는 두번째 패턴을 구현한 것입니다.
■ 컴퓨터가 사양이 좀 딸리다보니 AVD가 너무 느리게 반응을 해서 핸드폰으로 테스트를 하는데....AVD와 핸드폰 좌표값도 다르고 속도도 다르고 해서 동영상이 속도가 좀 느리고 답답해도 이해해 주세요^^;;