prefabs/player.ts
import { Scene } from "phaser";
const ANIM_STAT = {
IDLE: "idle",
};
export class Player extends Phaser.GameObjects.Sprite {
private context: Scene;
private keyA: Phaser.Input.Keyboard.Key;
private keyS: Phaser.Input.Keyboard.Key;
private keyD: Phaser.Input.Keyboard.Key;
private keyW: Phaser.Input.Keyboard.Key;
constructor(scene: Scene, x: number, y: number) {
super(scene, x, y, 'hoge');
this.context = scene;
this.anims.create({
key: ANIM_STAT.IDLE,
frames: this.anims.generateFrameNames('hoge', {
prefix: "idle/frame",
start: 0,
end: 5,
zeroPad: 4,
}),
frameRate: 8,
repeat: -1,
});
this.setOrigin(0.5, 1);
this.setScale(4);
this.play(ANIM_STAT.IDLE);
this.context.add.existing(this);
this.keyA = this.context.input.keyboard.addKey(
Phaser.Input.Keyboard.KeyCodes.A
);
this.keyS = this.context.input.keyboard.addKey(
Phaser.Input.Keyboard.KeyCodes.S
);
this.keyD = this.context.input.keyboard.addKey(
Phaser.Input.Keyboard.KeyCodes.D
);
this.keyW = this.context.input.keyboard.addKey(
Phaser.Input.Keyboard.KeyCodes.W
);
}
protected preUpdate(time: number, delta: number) {
super.preUpdate(time, delta);
if (this.keyA.isDown) {
this.x -= 10;
}
if (this.keyD.isDown) {
this.x += 10;
}
}
}
prefabs/index.ts
export * from "./player";
scenes/main-scene.ts
import { Player } from "../prefabs";
export class MainScene extends Phaser.Scene {
private player: Player;
constructor() {
super({
key: "MainScene",
});
}
preload(): void {
console.log("main scene preload");
}
create(): void {
console.log("main scene create");
this.player = new Player(
this,
this.cameras.main.centerX,
this.cameras.main.height * 0.8
);
}
update(time: number, delta: number) {
super.update(time, delta);
}
}