From 6242c4e37e0879bff1a866c356893ed005d65111 Mon Sep 17 00:00:00 2001 From: Yogi Wiguna Date: Fri, 13 Mar 2026 10:19:38 +0800 Subject: [PATCH] feat: Implement player movement manager for grid-based movement, rotation, and complex player interactions including pushing and environmental checks. --- scripts/managers/player_movement_manager.gd | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/managers/player_movement_manager.gd b/scripts/managers/player_movement_manager.gd index 25143a8..fee8c12 100644 --- a/scripts/managers/player_movement_manager.gd +++ b/scripts/managers/player_movement_manager.gd @@ -533,8 +533,11 @@ func _is_path_blocked_by_physics(from_grid: Vector2i, to_grid: Vector2i) -> bool var path_result = space_state.intersect_ray(path_query) if path_result: if path_result.collider != player: - # This correctly hits thin walls placed on tile boundaries - return true + # Ghost mode can bypass physical thin walls like Safe Zone walls + if player.get("is_invisible") and (path_result.collider.is_in_group("SafeZoneWalls") or path_result.collider.name.begins_with("Wall")): + pass + else: + return true # 2. Target tile occupancy check: Block if a static object is in the middle of the tile var target_from = Vector3(to_grid.x + 0.5, 1.0, to_grid.y + 0.5)