extends KinematicBody2D var agent := GSAIKinematicBody2DAgent.new() var target := GSAIAgentLocation.new() var arrive := GSAIArrive.new() var _accel := GSAITargetAcceleration.new() var _velocity := Vector2() var _drag := 0.1 func _init() -> void: agent.body = self arrive.agent = agent arrive.target = target func _physics_process(delta: float) -> void: arrive.calculate_steering(_accel) agent.apply_steering(_accel, delta) func setup( linear_speed_max: float, linear_acceleration_max: float, arrival_tolerance: float, deceleration_radius: float ) -> void: agent.linear_speed_max = linear_speed_max agent.linear_acceleration_max = linear_acceleration_max agent.linear_drag_percentage = _drag arrive.deceleration_radius = deceleration_radius arrive.arrival_tolerance = arrival_tolerance target.position = agent.position