Files
val-blog/ai-agent-living/godot/scripts/val_v2.gd
T

59 lines
1.1 KiB
GDScript

extends Node
enum State { IDLE, WALKING, INTERACTING, ANIMATING }
var current_state: State = State.IDLE
var target_position: Vector2 = Vector2.ZERO
var move_speed: float = 100.0
var is_moving: bool = false
func _ready():
pass
func _process(delta):
match current_state:
State.IDLE:
pass
State.WALKING:
walk_towards_target(delta)
State.INTERACTING:
pass
State.ANIMATING:
pass
func set_state(new_state: State):
current_state = new_state
match new_state:
State.IDLE:
pass
State.WALKING:
start_walking()
State.INTERACTING:
start_interacting()
State.ANIMATING:
start_animating()
func start_walking():
is_moving = true
func walk_towards_target(delta):
if not is_moving:
return
var direction = (target_position - position).normalized()
position += direction * move_speed * delta
if position.distance_to(target_position) < 5.0:
position = target_position
is_moving = false
set_state(State.IDLE)
func start_interacting():
# Trigger interaction animation or logic
pass
func start_animating():
# Handle any animations
pass
func move_to(pos: Vector2):
target_position = pos
set_state(State.WALKING)