Files
fps_project_1/scripts/EnemyStates.gd
2025-04-28 16:57:22 -05:00

34 lines
942 B
GDScript

extends State
class_name EnemyState
@export var enemy : CharacterBody3D
@export var move_speed : float = 3
@export var can_see : bool = false # indicates whether the enemy is able to see things in the state
@export var time_to_lose_target = 1.0
@onready var target_lost_timer = time_to_lose_target
func Update(delta):
pass
func move_target():
if enemy.player_last_seen != null:
return enemy.player_last_seen
elif enemy.points_of_interest.size() > 0:
var move_point = {"loudness" : 0.0,"point" : Vector3.ZERO}
for point in enemy.points_of_interest:
if point["loudness"] > move_point["loudness"]:
move_point = point
return move_point["point"]
else:
Transitioned.emit(self,"idle")
func attack_on_sight():
if can_see:
if enemy.is_player_in_area() and enemy.is_player_visible():
Transitioned.emit(self,"attack")
func search_on_lost_target(delta):
if !enemy.is_player_visible():
Transitioned.emit(self,"attack")