import Phaser from "phaser"; export class ObstaclePlatformDisappearing extends Phaser.GameObjects.Rectangle { static readonly COLOR = 0x9966cc; static readonly TRIGGER_DISTANCE = 110; static readonly FADE_MS = 200; declare body: Phaser.Physics.Arcade.StaticBody; private vanished = false; constructor(scene: Phaser.Scene, x: number, y: number, width: number, height: number) { super(scene, x, y, width, height, ObstaclePlatformDisappearing.COLOR); scene.add.existing(this); scene.physics.add.existing(this, true); } react(playerX: number, playerY: number): void { if (this.vanished) return; const dx = this.x - playerX; const dy = this.y - playerY; if (Math.hypot(dx, dy) < ObstaclePlatformDisappearing.TRIGGER_DISTANCE) { this.vanish(); } } private vanish(): void { this.vanished = true; this.body.enable = false; this.scene.tweens.add({ targets: this, alpha: 0, duration: ObstaclePlatformDisappearing.FADE_MS, onComplete: () => this.setVisible(false), }); } }