diff --git a/2d/navigation_astar/character.gd b/2d/navigation_astar/character.gd index 6f5ea1dc..799ec2df 100644 --- a/2d/navigation_astar/character.gd +++ b/2d/navigation_astar/character.gd @@ -1,14 +1,16 @@ extends Node2D +const PathFindAStar = preload("./pathfind_astar.gd") + enum State { IDLE, FOLLOW, } -const MASS = 10.0 -const ARRIVE_DISTANCE = 10.0 +const MASS: float = 10.0 +const ARRIVE_DISTANCE: float = 10.0 -@export_range(10, 500, 0.1, "or_greater") var speed := 200.0 +@export_range(10, 500, 0.1, "or_greater") var speed: float = 200.0 var _state := State.IDLE var _velocity := Vector2() @@ -17,7 +19,7 @@ var _click_position := Vector2() var _path := PackedVector2Array() var _next_point := Vector2() -@onready var _tile_map: TileMap = $"../TileMap" +@onready var _tile_map: PathFindAStar = $"../TileMap" func _ready() -> void: _change_state(State.IDLE) @@ -27,7 +29,7 @@ func _process(_delta: float) -> void: if _state != State.FOLLOW: return - var arrived_to_next_point := _move_to(_next_point) + var arrived_to_next_point: bool = _move_to(_next_point) if arrived_to_next_point: _path.remove_at(0) if _path.is_empty(): @@ -46,9 +48,9 @@ func _unhandled_input(event: InputEvent) -> void: _change_state(State.FOLLOW) -func _move_to(local_position: Vector2) -> float: - var desired_velocity := (local_position - position).normalized() * speed - var steering := desired_velocity - _velocity +func _move_to(local_position: Vector2) -> bool: + var desired_velocity: Vector2 = (local_position - position).normalized() * speed + var steering: Vector2 = desired_velocity - _velocity _velocity += steering / MASS position += _velocity * get_process_delta_time() rotation = _velocity.angle() diff --git a/2d/navigation_astar/pathfind_astar.gd b/2d/navigation_astar/pathfind_astar.gd index a7187d15..9233c871 100644 --- a/2d/navigation_astar/pathfind_astar.gd +++ b/2d/navigation_astar/pathfind_astar.gd @@ -7,7 +7,7 @@ enum Tile { } const CELL_SIZE = Vector2i(64, 64) -const BASE_LINE_WIDTH = 3.0 +const BASE_LINE_WIDTH: float = 3.0 const DRAW_COLOR = Color.WHITE * Color(1, 1, 1, 0.5) # The object for pathfinding on 2D grids. @@ -39,9 +39,9 @@ func _draw() -> void: if _path.is_empty(): return - var last_point := _path[0] + var last_point: Vector2 = _path[0] for index in range(1, len(_path)): - var current_point := _path[index] + var current_point: Vector2 = _path[index] draw_line(last_point, current_point, DRAW_COLOR, BASE_LINE_WIDTH, true) draw_circle(current_point, BASE_LINE_WIDTH * 2.0, DRAW_COLOR) last_point = current_point @@ -51,8 +51,8 @@ func round_local_position(local_position: Vector2i) -> Vector2i: return map_to_local(local_to_map(local_position)) -func is_point_walkable(local_position: Vector2i) -> bool: - var map_position := local_to_map(local_position) +func is_point_walkable(local_position: Vector2) -> bool: + var map_position: Vector2i = local_to_map(local_position) if _astar.is_in_boundsv(map_position): return not _astar.is_point_solid(map_position) return false