[javascript] Phaser에서 적 AI 및 공격 패턴 구현하기

Phaser는 HTML5 기반의 게임 개발 프레임워크로, 다양한 게임 개발에 활용되고 있습니다. 이번 글에서는 Phaser를 사용하여 적 AI와 공격 패턴을 구현하는 방법에 대해 알아보겠습니다.

1. 적 AI 생성하기

적 AI를 만들기 위해 Phaser에서는 Phaser.Physics.Arcade.Sprite 클래스를 사용할 수 있습니다. 해당 클래스를 상속받아 자신만의 AI 동작을 구현할 수 있습니다. 아래는 적 AI 클래스의 예시입니다.

class Enemy extends Phaser.Physics.Arcade.Sprite {
  constructor(scene, x, y, texture) {
    super(scene, x, y, texture);
    scene.add.existing(this);
    scene.physics.add.existing(this);

    // 적 AI 초기화
    this.initAI();
  }

  initAI() {
    // AI 동작을 초기화하는 로직을 작성합니다.
  }

  update() {
    // AI 동작을 업데이트하는 로직을 작성합니다.
  }
}

위의 코드에서 initAI 메서드는 AI의 초기 동작을 설정하는 부분으로, 여기서는 적이 플레이어를 추적하거나 특정 지점으로 이동하는 등의 동작을 구현할 수 있습니다. update 메서드는 매 프레임마다 AI 동작을 업데이트하는 부분입니다.

2. 공격 패턴 구현하기

적이 플레이어에게 공격을 가하는 패턴을 구현하기 위해서는 적 AI의 update 메서드에서 플레이어와의 거리를 계산하고, 일정 조건에 따라 공격을 수행하는 로직을 작성해야 합니다. 아래는 적이 플레이어를 인식하고 공격하는 예시입니다.

update() {
  // 플레이어와의 거리 계산
  const distance = Phaser.Math.Distance.Between(this.x, this.y, player.x, player.y);

  // 일정 거리 이내에 플레이어가 있다면 공격
  if (distance < attackRange) {
    this.attackPlayer();
  }
}

attackPlayer() {
  // 플레이어에게 공격하는 로직을 작성합니다.
}

위의 예시에서는 Phaser.Math.Distance.Between 함수를 사용하여 적과 플레이어 사이의 거리를 계산합니다. 그리고 일정 거리 이내에 플레이어가 있다면 attackPlayer 메서드를 호출하여 공격을 수행합니다. 공격 동작은 해당 메서드에서 구현하면 됩니다.

3. 예시 게임에서의 활용

위에서 구현한 적 AI와 공격 패턴을 실제 게임에서 활용하려면 아래와 같이 적을 생성하고 업데이트해야 합니다.

class GameScene extends Phaser.Scene {
  create() {
    // 적 생성
    this.enemy = new Enemy(this, x, y, 'enemy');

    // 플레이어 생성, 설정 등의 코드...

    // 게임 업데이트 시마다 적 업데이트
    this.events.on(Phaser.Scenes.Events.UPDATE, this.update, this);
  }

  update() {
    // 적 업데이트
    this.enemy.update();
  }
}

위의 코드에서는 GameScene 클래스에서 적을 생성하고, 게임 업데이트 시에 적을 업데이트하도록 설정하였습니다. 이렇게 하면 적 AI가 게임에서 동작하게 됩니다.

Phaser를 사용하여 적 AI와 공격 패턴을 구현하는 방법에 대해 알아보았습니다. 적 AI의 동작을 더욱 다양하게 구현하고, 보다 다양한 공격 패턴을 추가할 수도 있습니다. Phaser의 다양한 기능과 메서드를 활용하여 게임을 더욱 흥미롭고 동적으로 만들어보세요!

참고 자료