very happy with idle script now

This commit is contained in:
derek
2025-04-30 13:04:52 -05:00
parent d9ab3a82a7
commit 6cc110016a
5 changed files with 39 additions and 40 deletions

View File

@@ -1,37 +1,40 @@
extends EnemyState
class_name EnemyIdle
@export var idle_time_range : Vector2 = Vector2(5,7)
@export var wander_distance_max : float = 30.0
@export var wander_distance_max : float = 15.0
@export var scan_cone_angle : float = 90
@export var scan_time : float = 3
var idle_timer
var scan_timer
var scan_direction
func Enter():
idle_timer = randf_range(idle_time_range.x,idle_time_range.y)
scan_direction = scan_cone_angle/2
scan_timer = scan_time
get_new_wander_point()
func Update(delta):
#attack_on_sight()
if idle_timer > 0:
idle_timer -= delta
if scan_timer > 0:
scan_timer -= delta
else:
get_new_wander_point()
change_scan_direction()
func Physics_Update(delta):
debug_marker(move_target)
move_to_nav_point(delta)
#turret_look(delta)
if enemy.nav_agent.is_navigation_finished():
get_new_wander_point()
else:
move_to_nav_point(delta)
turret_scan_look(enemy.nav_agent.get_next_path_position(),scan_direction,delta)
func get_new_wander_point():
#reset timer
idle_timer = randf_range(idle_time_range.x,idle_time_range.y)
var x = randf_range(-wander_distance_max,wander_distance_max)
var z = randf_range(-wander_distance_max,wander_distance_max)
move_target = enemy.global_position + Vector3(x,0,z)
enemy.nav_agent.set_target_position(move_target)
print("MOVE TARGET : ",move_target)
get_turret_look_destination()
func get_turret_look_destination():
look_target = move_target + Vector3(0,3,0)
func change_scan_direction():
scan_timer = scan_time
scan_direction = -scan_direction

View File

@@ -48,7 +48,7 @@ func search_for_suspicious_sounds():
enemy.player_last_seen = null
Transitioned.emit(self,"search")
func rotate_to_face2D(object,target,delta,turn_speed):
func rotate_to_face2D(object,target,target_offset_angle,delta,turn_speed):
#to allow both nodes and positions to be passed to this function, test the target and use Vector3 coords
var target_transformed
if target == null:
@@ -61,21 +61,22 @@ func rotate_to_face2D(object,target,delta,turn_speed):
var pos2d = Vector2(object.global_position.x,object.global_position.z)
var target_pos2d = Vector2(target_transformed.x,target_transformed.z)
var direction = (pos2d - target_pos2d)
return lerp_angle(object.rotation.y,atan2(direction.x,direction.y),delta * turn_speed)
func clear_point_of_interest():
enemy.point_of_interest = null
return lerp_angle(object.global_rotation.y,atan2(direction.x,direction.y) + deg_to_rad(target_offset_angle),delta * turn_speed)
func move_to_nav_point(delta):
var destination = enemy.nav_agent.get_next_path_position()
var local_destination = destination - enemy.global_position
var direction = local_destination.normalized()
if enemy.global_position.distance_to(destination) > 1:
enemy.velocity = direction * move_speed
enemy.global_rotation.y = rotate_to_face2D(enemy,destination,delta,body_turn_speed)
enemy.velocity = direction * move_speed
enemy.global_rotation.y = rotate_to_face2D(enemy,destination,0,delta,body_turn_speed)
func turret_look(delta):
enemy.turret_look.global_rotation.y = rotate_to_face2D(enemy.turret_look,move_target,delta,50)
func turret_look(target,delta):
enemy.turret_look.global_rotation.y = rotate_to_face2D(enemy.turret_look,target,0,delta,turret_speed)
func turret_scan_look(target,scan_direction,delta):
enemy.turret_look.global_rotation.y = rotate_to_face2D(enemy.turret_look,target,scan_direction,delta,turret_speed)
func debug_marker(target_pos):
if enemy.debug_tools:

View File

@@ -36,7 +36,6 @@ var last_enemy : bool = false
@onready var postfire_timer = $Timers/postfire_timer
@onready var knocked_timer = $Timers/knocked_timer
@onready var stunned_timer = $Timers/stunned_timer
@onready var turret_look_next = $TurretLookNext
@onready var body = $body
@onready var audio_fire = $AUIDO/Fire
@onready var turret = $TurretLook/Turret