From 1c1ee97b2c76bb52bd6232a01533803b5be02101 Mon Sep 17 00:00:00 2001 From: NovaFarma Dev Date: Sat, 6 Dec 2025 18:12:15 +0100 Subject: [PATCH] FAZA 2: Fix player going off-terrain - sync player with terrain container offset --- src/entities/Player.js | 23 +++++++++++++++++------ src/scenes/GameScene.js | 10 +++++++--- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/entities/Player.js b/src/entities/Player.js index 4d14a37..47c4e90 100644 --- a/src/entities/Player.js +++ b/src/entities/Player.js @@ -1,14 +1,18 @@ // 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); - // Hitrost gibanja + // Hitrostgibanja this.moveSpeed = 150; // px/s this.gridMoveTime = 200; // ms za premik na eno kocko @@ -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(); } diff --git a/src/scenes/GameScene.js b/src/scenes/GameScene.js index 9409c93..7763c81 100644 --- a/src/scenes/GameScene.js +++ b/src/scenes/GameScene.js @@ -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);