33 lines
683 B
GDScript3
33 lines
683 B
GDScript3
|
|
extends ChatterState
|
||
|
|
class_name MoveState
|
||
|
|
|
||
|
|
@export var move_speed := 60.0
|
||
|
|
|
||
|
|
var move_direction: Vector2 = Vector2.ZERO
|
||
|
|
var wander_time: float = 3.0
|
||
|
|
|
||
|
|
func randomize_wander():
|
||
|
|
move_direction = Vector2(randf_range(-1,1), 0).normalized()
|
||
|
|
wander_time = randf_range(1,6)
|
||
|
|
|
||
|
|
func _enter() -> void:
|
||
|
|
randomize_wander()
|
||
|
|
|
||
|
|
func _exit() -> void:
|
||
|
|
pass
|
||
|
|
|
||
|
|
func _update(delta: float) -> void:
|
||
|
|
if wander_time > 0:
|
||
|
|
wander_time -= delta
|
||
|
|
else:
|
||
|
|
if randf() > 0.5:
|
||
|
|
transitioned.emit(self, "idle")
|
||
|
|
else:
|
||
|
|
randomize_wander()
|
||
|
|
|
||
|
|
func _physics_update(_delta: float) -> void:
|
||
|
|
if chatter:
|
||
|
|
if chatter.is_on_wall():
|
||
|
|
move_direction = -move_direction
|
||
|
|
chatter.velocity = move_direction * move_speed
|