more AI work

This commit is contained in:
derek
2025-04-24 17:03:01 -05:00
parent 9be895e89f
commit 546f9a895e
14 changed files with 152 additions and 45 deletions

View File

@@ -2,14 +2,9 @@ extends State
class_name EnemyState
@export var enemy : CharacterBody3D
@export var enemy_targets : Array[Area3D]
@export var move_speed : float = 3
@export var can_see : bool = false
@export var can_see : bool = false # indicates whether the enemy is able to see things in the state
func Enter():
if enemy_targets != null:
for target in enemy_targets:
target.body_part_hit.connect(take_damage)
func Update(delta):
if enemy.visibility_areas != null:
@@ -17,28 +12,15 @@ func Update(delta):
var bodies = area.get_overlapping_bodies()
if bodies != null:
for i in bodies:
enemy.point_of_interest = i.global_position
if i is Player:
enemy.character_follow = i
else:
enemy.point_of_interest = null
enemy.character_follow = null
if enemy.point_of_interest != null:
enemy.line_of_sight_ray.look_at(enemy.point_of_interest)
if enemy.line_of_sight_ray.is_colliding():
if enemy.line_of_sight_ray.get_collider() is Player:
if can_see:
enemy.character_follow = enemy.line_of_sight_ray.get_collider()
Transitioned.emit(self,"attack")
if enemy.character_follow != null:
if can_see:
if enemy.is_player_visible():
print("PLAYER SPOTTED")
enemy.cache_player_pos()
Transitioned.emit(self,"attack")
func take_damage(dam,bullet_damage):
SignalBus.emit_signal("enemy_hit")
enemy.health -= dam * bullet_damage
enemy.health_bar_sprite.visible = true
enemy.health_bar_sprite.health_update()
var number_spawn = enemy.damage_number.instantiate()
number_spawn.damage_amt = bullet_damage * dam
number_spawn.position = enemy.global_position + Vector3(0,2,0)
get_tree().get_root().add_child(number_spawn)
if enemy.health <= 0:
Transitioned.emit(self,"die")