myPlayer2HeartsManager


import * as Phaser from 'phaser';
export class HeartsManager extends Phaser.GameObjects.Container {
 private heartKey: string;
 private maxHearts: number;
 private hearts: Phaser.GameObjects.Image[] = [];
// ハート1つの横幅や間隔(ピクセル)
private spacing: number = 32;
constructor(scene: Phaser.Scene, x: number, y: number, maxHearts: number, heartKey: string) {
  super(scene, x, y);
  this.maxHearts = maxHearts;
  this.heartKey = heartKey;
// シーンの更新リストと表示リストに追加
 scene.add.existing(this);
 // 初期ハートの生成
  this.createHearts();
 }
// 指定された最大数分のハート画像を生成してコンテナに格納
private createHearts(): void {
  for (let i = 0; i < this.maxHearts; i++) {
  const heart = this.scene.add.image(i * this.spacing, 0, this.heartKey);
  heart.setOrigin(0, 0);
  heart.setScale(0.1);// 左上原点にすると並べやすい
  this.add(heart);
  this.hearts.push(heart);
}
}
 // 現在のライフに応じてハートの表示・非表示(またはテクスチャ)を切り替える
public updateHearts(currentLife: number): void {
 this.hearts.forEach((heart, index) => {
if (index < currentLife) {
   heart.setActive(true).setVisible(true);
    } else {
   heart.setActive(false).setVisible(false);
  // heart.setTexture('empty_heart_key');
 }
 });
 }
}