From 648befbf585a98ef56143ea7846bb43ce3f2882d Mon Sep 17 00:00:00 2001 From: dev-gilbride <59292983+dev-gilbride@users.noreply.github.com> Date: Fri, 24 Feb 2023 10:22:48 -0700 Subject: [PATCH] Check for obstacle before teleporting player in Grid-based Pathfinding with Astar (#771) Co-authored-by: Hugo Locurcio --- 2d/navigation_astar/Game.tscn | 1 - 2d/navigation_astar/character.gd | 2 +- 2d/navigation_astar/icon.png.import | 2 +- 2d/navigation_astar/pathfind_astar.gd | 8 ++++++++ 2d/navigation_astar/sprites/character.png.import | 2 +- 2d/navigation_astar/sprites/obstacle.png.import | 2 +- 2d/navigation_astar/sprites/path_end.png.import | 2 +- 2d/navigation_astar/sprites/path_start.png.import | 2 +- 8 files changed, 14 insertions(+), 7 deletions(-) diff --git a/2d/navigation_astar/Game.tscn b/2d/navigation_astar/Game.tscn index 30c4a447..46a9fcc8 100644 --- a/2d/navigation_astar/Game.tscn +++ b/2d/navigation_astar/Game.tscn @@ -23,4 +23,3 @@ texture = ExtResource("4") [node name="Camera2D" type="Camera2D" parent="."] offset = Vector2(576, 324) -current = true diff --git a/2d/navigation_astar/character.gd b/2d/navigation_astar/character.gd index 24e46b3d..3063033f 100644 --- a/2d/navigation_astar/character.gd +++ b/2d/navigation_astar/character.gd @@ -33,7 +33,7 @@ func _process(_delta): func _unhandled_input(event): if event.is_action_pressed("click"): var global_mouse_pos = get_global_mouse_position() - if Input.is_key_pressed(KEY_SHIFT): + if Input.is_key_pressed(KEY_SHIFT) and get_parent().get_node("TileMap").check_start_position(global_mouse_pos): global_position = global_mouse_pos else: _target_position = global_mouse_pos diff --git a/2d/navigation_astar/icon.png.import b/2d/navigation_astar/icon.png.import index 27f78244..b88c0877 100644 --- a/2d/navigation_astar/icon.png.import +++ b/2d/navigation_astar/icon.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.cte [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/navigation_astar/pathfind_astar.gd b/2d/navigation_astar/pathfind_astar.gd index 2dc39ae7..ea659c39 100644 --- a/2d/navigation_astar/pathfind_astar.gd +++ b/2d/navigation_astar/pathfind_astar.gd @@ -147,6 +147,14 @@ func is_outside_map_bounds(point): return point.x < 0 or point.y < 0 or point.x >= map_size.x or point.y >= map_size.y +func check_start_position(world_start): + var start_point = local_to_map(world_start) + if start_point in obstacles: + return false + + return true + + func get_astar_path(world_start, world_end): self.path_start_position = local_to_map(world_start) self.path_end_position = local_to_map(world_end) diff --git a/2d/navigation_astar/sprites/character.png.import b/2d/navigation_astar/sprites/character.png.import index 29c76e83..fd9485b6 100644 --- a/2d/navigation_astar/sprites/character.png.import +++ b/2d/navigation_astar/sprites/character.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/character.png-eb70ac48a5acf508c4b7740ea4ac4fa [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/navigation_astar/sprites/obstacle.png.import b/2d/navigation_astar/sprites/obstacle.png.import index 10dfcc86..c9289cb0 100644 --- a/2d/navigation_astar/sprites/obstacle.png.import +++ b/2d/navigation_astar/sprites/obstacle.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/obstacle.png-0258c5f5ce65bfa0dd8610adeb784f54 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/navigation_astar/sprites/path_end.png.import b/2d/navigation_astar/sprites/path_end.png.import index 67877a55..ab1172f8 100644 --- a/2d/navigation_astar/sprites/path_end.png.import +++ b/2d/navigation_astar/sprites/path_end.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/path_end.png-02b79e25892cd8d863bd44c3c5a1720e [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/navigation_astar/sprites/path_start.png.import b/2d/navigation_astar/sprites/path_start.png.import index d10361b1..b4c39d3b 100644 --- a/2d/navigation_astar/sprites/path_start.png.import +++ b/2d/navigation_astar/sprites/path_start.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/path_start.png-475bd0b469629aa8779d506c5134e5 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false