Browse Source

Check for obstacle before teleporting player in Grid-based Pathfinding with Astar (#771)

Co-authored-by: Hugo Locurcio <[email protected]>
dev-gilbride 2 years ago
parent
commit
648befbf58

+ 0 - 1
2d/navigation_astar/Game.tscn

@@ -23,4 +23,3 @@ texture = ExtResource("4")
 
 
 [node name="Camera2D" type="Camera2D" parent="."]
 [node name="Camera2D" type="Camera2D" parent="."]
 offset = Vector2(576, 324)
 offset = Vector2(576, 324)
-current = true

+ 1 - 1
2d/navigation_astar/character.gd

@@ -33,7 +33,7 @@ func _process(_delta):
 func _unhandled_input(event):
 func _unhandled_input(event):
 	if event.is_action_pressed("click"):
 	if event.is_action_pressed("click"):
 		var global_mouse_pos = get_global_mouse_position()
 		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
 			global_position = global_mouse_pos
 		else:
 		else:
 			_target_position = global_mouse_pos
 			_target_position = global_mouse_pos

+ 1 - 1
2d/navigation_astar/icon.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.cte
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 8 - 0
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
 	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):
 func get_astar_path(world_start, world_end):
 	self.path_start_position = local_to_map(world_start)
 	self.path_start_position = local_to_map(world_start)
 	self.path_end_position = local_to_map(world_end)
 	self.path_end_position = local_to_map(world_end)

+ 1 - 1
2d/navigation_astar/sprites/character.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/character.png-eb70ac48a5acf508c4b7740ea4ac4fa
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 1 - 1
2d/navigation_astar/sprites/obstacle.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/obstacle.png-0258c5f5ce65bfa0dd8610adeb784f54
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 1 - 1
2d/navigation_astar/sprites/path_end.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/path_end.png-02b79e25892cd8d863bd44c3c5a1720e
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 1 - 1
2d/navigation_astar/sprites/path_start.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/path_start.png-475bd0b469629aa8779d506c5134e5
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false