28 lines
906 B
TypeScript
28 lines
906 B
TypeScript
import Phaser from "phaser";
|
|
import { ObstacleSpikeBase } from "./ObstacleSpikeBase";
|
|
|
|
export class ObstacleSpikeTricky extends ObstacleSpikeBase {
|
|
static readonly TEXTURE_KEY = "spike-tricky";
|
|
static readonly WIDTH = 40;
|
|
static readonly HEIGHT = 20;
|
|
static readonly TRIGGER_DISTANCE = 55;
|
|
static readonly DISPLACEMENT = 100;
|
|
|
|
private moved = false;
|
|
|
|
constructor(scene: Phaser.Scene, x: number, y: number) {
|
|
super(scene, x, y, ObstacleSpikeTricky.TEXTURE_KEY);
|
|
}
|
|
|
|
react(playerX: number, _playerY: number): void {
|
|
if (this.moved) return;
|
|
const dx = this.x - playerX;
|
|
if (Math.abs(dx) < ObstacleSpikeTricky.TRIGGER_DISTANCE) {
|
|
const direction = Math.sign(dx) || 1;
|
|
this.x += direction * ObstacleSpikeTricky.DISPLACEMENT;
|
|
this.body.updateFromGameObject();
|
|
this.moved = true;
|
|
}
|
|
}
|
|
}
|