serious improvements on Ai and now has reload and rudimentary search
This commit is contained in:
@@ -1,2 +1,47 @@
|
||||
extends EnemyState
|
||||
class_name EnemyReload
|
||||
|
||||
@export var reload_sound : AudioStreamPlayer3D
|
||||
@export var servo_sound : AudioStreamPlayer3D
|
||||
@export var retreat_distance : float = 5.0
|
||||
@onready var player = get_tree().current_scene.player
|
||||
|
||||
|
||||
func Enter():
|
||||
update_reload_move_target()
|
||||
servo_sound.play()
|
||||
|
||||
func Update(delta):
|
||||
if enemy.ammo < enemy.max_ammo:
|
||||
reload()
|
||||
else:
|
||||
finished_reload()
|
||||
|
||||
func Physics_Update(delta):
|
||||
if enemy.is_player_visible():
|
||||
#get player location
|
||||
enemy.cache_player_pos()
|
||||
update_reload_look_target()
|
||||
move_to_nav_point(delta)
|
||||
turret_look3D(delta)
|
||||
|
||||
|
||||
func update_reload_look_target():
|
||||
look_target = enemy.global_position + Vector3(0,10,0)
|
||||
|
||||
func update_reload_move_target():
|
||||
var direction = (enemy.player_last_seen - enemy.global_position).normalized()
|
||||
move_target = direction * retreat_distance
|
||||
enemy.nav_agent.set_target_position(move_target)
|
||||
|
||||
func reload():
|
||||
if !reload_sound.is_playing():
|
||||
enemy.ammo += 1
|
||||
reload_sound.play()
|
||||
|
||||
func finished_reload():
|
||||
servo_sound.play()
|
||||
if enemy.is_player_visible():
|
||||
Transitioned.emit(self,"attack")
|
||||
else:
|
||||
Transitioned.emit(self,"search") #fix to search when it works
|
||||
|
||||
Reference in New Issue
Block a user