[javascript] Phaser에서 애니메이션 효과 추가하기

Phaser는 HTML5 게임 개발 프레임워크로, 강력한 애니메이션 기능을 제공합니다. 이번 포스트에서는 Phaser를 사용하여 애니메이션 효과를 추가하는 방법에 대해 알아보겠습니다.

1. 애니메이션 스프라이트 시트 준비하기

애니메이션 효과를 구현하기 위해 먼저 애니메이션 스프라이트 시트를 준비해야 합니다. 스프라이트 시트는 하나의 이미지 파일에 여러 프레임들이 연속적으로 나열되어 있는 형태입니다.

2. 애니메이션 생성하기

Phaser에서 애니메이션을 생성하기 위해서는 Phaser.GameObject.Sprite 객체를 사용해야 합니다. 이 객체는 애니메이션을 적용할 스프라이트를 표현합니다.

다음은 스프라이트 시트로부터 Phaser.GameObject.Sprite 객체를 생성하고 애니메이션을 추가하는 예제 코드입니다.

const config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    scene: {
        preload: preload,
        create: create
    }
};

const game = new Phaser.Game(config);

function preload() {
    this.load.spritesheet('player', 'assets/player_spritesheet.png', { frameWidth: 32, frameHeight: 48 });
}

function create() {
    const player = this.add.sprite(200, 200, 'player');
    
    this.anims.create({
        key: 'run',
        frames: this.anims.generateFrameNumbers('player', { start: 0, end: 5 }),
        frameRate: 10,
        repeat: -1
    });
    
    player.anims.play('run', true);
}

위 코드에서 preload 함수에서 this.load.spritesheet 메서드를 사용하여 스프라이트 시트를 불러옵니다. create 함수에서는 this.add.sprite 메서드를 사용하여 스프라이트를 생성하고, this.anims.create 메서드를 사용하여 애니메이션을 생성합니다. 이후 player.anims.play 메서드로 애니메이션을 실행시킬 수 있습니다.

3. 애니메이션 효과 컨트롤하기

애니메이션의 플레이 속도, 반복 여부 등을 컨트롤하기 위해서는 Phaser.Animations.Animation 객체의 속성들을 활용할 수 있습니다.

예를 들어, 애니메이션의 재생 속도를 변경하려면 다음과 같이 setFrameRate 메서드를 사용할 수 있습니다.

player.anims.get('run').setFrameRate(20);

위 코드는 run 키를 가진 애니메이션의 재생 속도를 20으로 변경합니다.

4. 요약

Phaser에서 애니메이션 효과를 추가하는 방법에 대해 알아보았습니다. 애니메이션 스프라이트 시트를 준비하고 Phaser.GameObject.Sprite 객체를 사용하여 애니메이션을 생성하고 컨트롤할 수 있습니다.

더 자세한 내용은 Phaser 공식 문서를 참고하시기 바랍니다.