45. 러너 게임으로 변경

이번 시간에는 현재 게임을 러너 게임으로 변경해 보겠습니다. 방법은 매우 간단한데, 항상 linear velocity X 값을 적용 시켜 주면 됩니다.

createUpdateHandler() 메서드의 onUpdate() 메서드 안에 makeRunnerGame() 가 실행되도록 작성해 줍니다.

makeRunnerGame() 메서드 안에 플레이어 바디에 linear velocity x 설정해 주고 게임을 실행시켜 주면 플레이어가 항상 오른쪽으로 달리는 것을 확인하 실 수 있습니다.

안드로이드 스튜디오 소스

완성된 게임(Hammer King)

44. 에너지 바 구현하기

이번 시간에는 플레이어의 에너지를 보여 주는 에너지 바를 구현해 보겠습니다.

먼저 관련 변수를 선언해 줍니다.

callController() 메서드 안에 health bar와 에너지를 표시할 하트 등의 sprite를 HUD에 붙여 줍니다.

createCollision() 메서드 안에 플레이어와 적의 충돌을 감지할 수 있도록 위와 같이 작성해 줍니다.

에너지 바가 항상 업데이트 되도록 createUpdateHandler() 메서드의 onUpdate() 안에 updateHealthBar() 메서드가 실행 되도록 작성해 줍니다.

플레이어의 에너지에 따라 하트 수를 다르게 보여줘서 에너지를 나타낼 수 있도록 위와 같이 작성했습니다.

게임을 실행해 보면 왼쪽 상단에 위와 같이 에너지 바가 보여 지는 것을 확인하실 수 있습니다.

안드로이드 스튜디오 소스

완성된 게임(Hammer King)

43. 적 무찌르기

공격을 통해 적을 무찌를 수 있도록 구현해 보겠습니다.

createCollision() 메서드 안에 적과 무기의 충돌에 대한 내용을 작성해 줍니다.

적과 플레이어의 무기가 충돌시 항상 적과 무기가 사라질 수 있도록 createUpdateHandler() 메서드의 onUpdate()안에 destroryGameObject() 메서드를 이용해 충돌한 적과 무기를 제거해 줍니다.

안드로이드 스튜디오 소스

완성된 게임(Hammer King)

42. 적에게 AI 부여하기

이번 시간에는 적에게 AI를 부여해 능동적으로 움직이게 만들어 보겠습니다.

플레이어와 적의 거리가 가까우면 적이 움직이게 하기 위해 먼저 플레이어와 적의 거리를 계산하는 getDistance() 메서드를 위와 같이 작성해 줍니다.

위에서 만든 getDistance() 메서드를 이용해 적와 플레이어가 특정 거리보다 가까우면 doAIActions() 메서드가 실행되도록 작성해 줍니다.

적이할 행동을 doAIActions() 메서드 안에 작성해 줍니다.

적이 항상 AI를 가질 수 있도록 createUpdateHandler() 메서드의 onUpdate() 안에 doAICalculations()가 실행되도록 작성해 줍니다.

안드로이드 스튜디오 소스

완성된 게임(Hammer King)

41. 적 등장 시키기

타일 맵에 벽 추가하는 것과 유사하게 창문이 있는 곳과 문이 있는 곳에 오브젝트를 추가하고 그곳에 적이 생성되도록 만들어 주겠습니다.

loadObject() 안에 window와 door 오브젝트에 적을 생성 시키는 loadEnemiesFromObjects() 메서드를 실행되게 합니다.

캐릭터 생성과 유사하게 loadEnemiesFromObjects() 메서드를 작성하고 showEnemy() 메서드가 실행되도록 작성해 줍니다.

마지막으로 showEnemy() 메서드를 위와 같이 작성해 줍니다.

게임을 실행해 주면 위와 같이 적들이 화면에 보여 집니다.

안드로이드 스튜디오 소스

완성된 게임(Hammer King)

40. 화면 이동하기

이번 시간에는 카메라가 캐릭터를 따라 움직이게 만드는 방법에 대해 알려 드리겠습니다. 소스에는 여러 애니매이션을 구현할 때 이미 적용해 놓았는데 이제야 설명해 드립니다.

AndEngine의 카메라는 여러 가지가 있는데 이제까지 사용한 카메라는 일반적인 Camera 클래서 였는데, 화면 이동을 위해 SmoothCamera를 사용하겠습니다.

onCreateEngineOptions() 메서드 안에 내용을 SmoothCamera에 맞게 수정해 줍니다.

onCreateScene() 메서드 안에 카메라의 바운드를 타일맵으로 한정해 주고, 카메라가 플레이어를 따라 다니도록 수정해 줍니다.

안드로이드 스튜디오 소스

완성된 게임(Hammer King)

39. 공격 구현하기(디테일 설정)

이번 시간에는 지난 시간에 이어 공격에 관해 디테일하게 설정해 주겠습니다.

피격 범위가 공격 후에 사라지게 하기 위해 destroyGameObject() 메서드를 만들어 줍니다.

createUpdateHandler() 메서드 안에 적이 무기에 안 맞았을 때 weapon object가 메모리에서 해제되도록 위와 같이 작성해 줍니다.

피격 범위가 정상적으로 사라지는 것이 확인되면 피격 범위는 더이상 화면에 보이지 않도록 설정해 줍니다.

안드로이드 스튜디오 소스

완성된 게임(Hammer King)