FAZA 2: Fix player going off-terrain - sync player with terrain container offset

This commit is contained in:
2025-12-06 18:12:15 +01:00
parent 6e92e89f74
commit 1c1ee97b2c
2 changed files with 24 additions and 9 deletions

View File

@@ -1,11 +1,15 @@
// Player Entity
// Igralec z WASD kontrolami in isometrično podporo
class Player {
constructor(scene, gridX = 50, gridY = 50) {
constructor(scene, gridX = 50, gridY = 50, offsetX = 0, offsetY = 0) {
this.scene = scene;
this.gridX = gridX;
this.gridY = gridY;
// Terrain offset (za sinhronizacijo s terrain containerjem)
this.offsetX = offsetX;
this.offsetY = offsetY;
this.iso = new IsometricUtils(48, 24);
// Hitrostgibanja
@@ -32,7 +36,11 @@ class Player {
// Kreira sprite
const screenPos = this.iso.toScreen(this.gridX, this.gridY);
this.sprite = this.scene.add.sprite(screenPos.x, screenPos.y, 'player');
this.sprite = this.scene.add.sprite(
screenPos.x + this.offsetX,
screenPos.y + this.offsetY,
'player'
);
this.sprite.setOrigin(0.5, 1); // Anchor na dnu sprite-a
// Depth sorting
@@ -107,8 +115,8 @@ class Player {
// Tween za smooth gibanje (brez animacije za zdaj)
this.scene.tweens.add({
targets: this.sprite,
x: targetScreen.x,
y: targetScreen.y,
x: targetScreen.x + this.offsetX,
y: targetScreen.y + this.offsetY,
duration: this.gridMoveTime,
ease: 'Linear',
onComplete: () => {
@@ -122,7 +130,10 @@ class Player {
updatePosition() {
const screenPos = this.iso.toScreen(this.gridX, this.gridY);
this.sprite.setPosition(screenPos.x, screenPos.y);
this.sprite.setPosition(
screenPos.x + this.offsetX,
screenPos.y + this.offsetY
);
this.updateDepth();
}

View File

@@ -21,11 +21,15 @@ class GameScene extends Phaser.Scene {
console.log('🌍 Initializing terrain...');
this.terrainSystem = new TerrainSystem(this, 100, 100);
this.terrainSystem.generate();
this.terrainContainer = this.terrainSystem.render(width / 2, 100);
// Dodaj igralca - spawn na sredini mape
// Terrain offset
this.terrainOffsetX = width / 2;
this.terrainOffsetY = 100;
this.terrainContainer = this.terrainSystem.render(this.terrainOffsetX, this.terrainOffsetY);
// Dodaj igralca - spawn na sredini mape S TERRAIN OFFSETOM
console.log('👤 Initializing player...');
this.player = new Player(this, 50, 50);
this.player = new Player(this, 50, 50, this.terrainOffsetX, this.terrainOffsetY);
// Kamera sledi igralcu
this.cameras.main.startFollow(this.player.sprite, true, 0.1, 0.1);