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

@@ -11,6 +11,7 @@ var last_enemy : bool = false
@export var max_ammo = 10
@export var loot_amount = 2
@export var nav_agent : NavigationAgent3D
@export var hit_targets : Array[Area3D]
@export var visibility_areas : Array[Area3D]
@export var line_of_sight_ray : RayCast3D
@@ -71,14 +72,14 @@ var hive_velocity
var hive_nav_point
var dying
var can_die : bool = false
var player_in_view = false
var player_last_seen
var knocked = false
var stunned = false
var health
var point_of_interest
var character_follow
var player_last_seen
func _ready():
health = start_health
@@ -90,12 +91,49 @@ func _ready():
await get_tree().create_timer(random_time).timeout
postfire_timer.start()
if hit_targets != null:
for target in hit_targets:
target.body_part_hit.connect(take_damage)
func _process(delta):
move_and_slide()
look_at_player()
cache_player_pos()
func stun():
state_machine.on_child_transition(state_machine.current_state,"stunned")
change_state_to("stunned")
func take_damage(dam,bullet_damage):
SignalBus.emit_signal("enemy_hit")
health -= dam * bullet_damage
health_bar_sprite.visible = true
health_bar_sprite.health_update()
var number_spawn = damage_number.instantiate()
number_spawn.damage_amt = bullet_damage * dam
number_spawn.position = global_position + Vector3(0,2,0)
get_tree().get_root().add_child(number_spawn)
if health <= 0:
change_state_to("die")
func change_state_to(set_state):
state_machine.on_child_transition(state_machine.current_state,set_state)
func look_at_player():
if character_follow != null:
line_of_sight_ray.look_at(character_follow.global_position)
func is_player_visible():
if line_of_sight_ray.is_colliding():
if line_of_sight_ray.get_collider() is Player:
return true
return false
func cache_player_pos():
if line_of_sight_ray.is_colliding():
if line_of_sight_ray.get_collider() is Player:
point_of_interest = line_of_sight_ray.get_collision_point()
func save():
var save_dict = {