limboai/test/ai/tasks/arrive_pos.gd

25 lines
719 B
GDScript

@tool
@icon("res://icon.png")
extends BTAction
@export var target_position_var := "target_position"
@export var speed_var := "speed"
@export var tolerance := 50.0
func _generate_name() -> String:
return "Arrive pos: %s speed: %s" % [
LimboUtility.decorate_var(target_position_var),
LimboUtility.decorate_var(speed_var),
]
func _tick(p_delta: float) -> int:
var target_pos: Vector2 = blackboard.get_var(target_position_var, Vector2.ZERO)
if target_pos.distance_to(agent.global_position) < tolerance:
return SUCCESS
var speed: float = blackboard.get_var(speed_var, 10.0)
var dir: Vector2 = agent.global_position.direction_to(target_pos)
agent.global_position += dir * speed * p_delta
return RUNNING