new tma
This commit is contained in:
26
src/entities/Player.ts
Normal file
26
src/entities/Player.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import Phaser from "phaser";
|
||||
import { TouchInput } from "../input/TouchInput";
|
||||
|
||||
export class Player {
|
||||
sprite: Phaser.GameObjects.Rectangle;
|
||||
speed = 160; // пикселей в секунду
|
||||
|
||||
constructor(scene: Phaser.Scene, x: number, y: number) {
|
||||
this.sprite = scene.add.rectangle(x, y, 32, 32, 0x00ff00);
|
||||
}
|
||||
|
||||
update(delta: number, input: TouchInput) {
|
||||
const dt = delta / 1000;
|
||||
|
||||
this.sprite.x += input.dx * this.speed * dt;
|
||||
this.sprite.y += input.dy * this.speed * dt;
|
||||
|
||||
this.sprite.x = Phaser.Math.Clamp(this.sprite.x, 16, 360 - 16);
|
||||
this.sprite.y = Phaser.Math.Clamp(this.sprite.y, 16, 640 - 16);
|
||||
}
|
||||
|
||||
setPosition(x: number, y: number) {
|
||||
this.sprite.x = x;
|
||||
this.sprite.y = y;
|
||||
}
|
||||
}
|
||||
29
src/entities/RemotePlayer.ts
Normal file
29
src/entities/RemotePlayer.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import Phaser from "phaser";
|
||||
|
||||
export class RemotePlayer {
|
||||
sprite: Phaser.GameObjects.Rectangle;
|
||||
|
||||
targetX: number;
|
||||
targetY: number;
|
||||
|
||||
constructor(scene: Phaser.Scene, x: number, y: number, color: number) {
|
||||
this.sprite = scene.add.rectangle(x, y, 32, 32, color);
|
||||
this.targetX = x;
|
||||
this.targetY = y;
|
||||
}
|
||||
|
||||
setTarget(x: number, y: number) {
|
||||
this.targetX = x;
|
||||
this.targetY = y;
|
||||
}
|
||||
|
||||
update() {
|
||||
// магия сглаживания
|
||||
this.sprite.x = Phaser.Math.Linear(this.sprite.x, this.targetX, 0.15);
|
||||
this.sprite.y = Phaser.Math.Linear(this.sprite.y, this.targetY, 0.15);
|
||||
}
|
||||
|
||||
destroy() {
|
||||
this.sprite.destroy();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user