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)