they can hear now too
This commit is contained in:
@@ -24,24 +24,17 @@ func Physics_Update(delta):
|
||||
|
||||
#if navigation is finished get new point, otherwise continue on path
|
||||
if enemy.nav_agent.is_navigation_finished():
|
||||
get_new_point_of_interest()
|
||||
if has_points_to_investigate():
|
||||
get_new_point_of_interest()
|
||||
else:
|
||||
Transitioned.emit(self,"idle")
|
||||
else:
|
||||
move_to_nav_point(delta)
|
||||
|
||||
#do turret scan
|
||||
turret_scan(Vector3(0,scan_direction,0),delta)
|
||||
|
||||
func get_new_point_of_interest():
|
||||
if enemy.player_last_seen != null:
|
||||
move_target = enemy.player_last_seen
|
||||
enemy.player_last_seen = null
|
||||
enemy.nav_agent.set_target_position(move_target)
|
||||
elif enemy.points_of_interest.size() > 0:
|
||||
var point_of_interest = enemy.points_of_interest.pop_back()
|
||||
move_target = point_of_interest["point"]
|
||||
enemy.nav_agent.set_target_position(move_target)
|
||||
else:
|
||||
Transitioned.emit(self,"idle")
|
||||
|
||||
|
||||
func change_scan_direction():
|
||||
scan_timer = scan_time
|
||||
|
||||
@@ -6,6 +6,9 @@ class_name EnemyState
|
||||
@export var body_turn_speed : float = 3
|
||||
@export var turret_speed : float = 6.0
|
||||
@export var can_see : bool = true # indicates whether the enemy is able to see things in the state
|
||||
@export var poi_investigate : bool = false
|
||||
@export var poi_change_to_search : bool = false
|
||||
@export var poi_update_waypoint_immediately : bool = false
|
||||
@export var time_to_lose_target = 1.0
|
||||
|
||||
@onready var target_lost_timer = time_to_lose_target
|
||||
@@ -115,6 +118,38 @@ func turret_look3D(delta):
|
||||
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 investigate_points_of_interest(point,loudness,max_distance):
|
||||
if poi_investigate:
|
||||
var distance_to_point = enemy.global_position.distance_to(point)
|
||||
if distance_to_point <= max_distance:
|
||||
var perceived_loudness = 1/distance_to_point * loudness
|
||||
var add_point = {"point" : point, "loudness" : perceived_loudness}
|
||||
enemy.points_of_interest.append(add_point)
|
||||
|
||||
if poi_change_to_search:
|
||||
Transitioned.emit(self,"search")
|
||||
|
||||
if poi_update_waypoint_immediately:
|
||||
get_new_point_of_interest()
|
||||
|
||||
func has_points_to_investigate():
|
||||
if enemy.player_last_seen != null:
|
||||
return true
|
||||
elif enemy.points_of_interest.size() > 0:
|
||||
return true
|
||||
else:
|
||||
return false
|
||||
|
||||
func get_new_point_of_interest():
|
||||
if enemy.player_last_seen != null:
|
||||
move_target = enemy.player_last_seen
|
||||
enemy.player_last_seen = null
|
||||
enemy.nav_agent.set_target_position(move_target)
|
||||
elif enemy.points_of_interest.size() > 0:
|
||||
var point_of_interest = enemy.points_of_interest.pop_back()
|
||||
move_target = point_of_interest["point"]
|
||||
enemy.nav_agent.set_target_position(move_target)
|
||||
|
||||
func clear_points_of_interest():
|
||||
enemy.points_of_interest = []
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
extends Node3D
|
||||
|
||||
@onready var die_particles = $dieParticles
|
||||
@onready var die_particles_2: GPUParticles3D = $dieParticles2
|
||||
@export var audio_explode : Node
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
die_particles.emitting = true
|
||||
die_particles_2.emitting = true
|
||||
audio_explode.play()
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
||||
@@ -153,21 +153,7 @@ func cache_player_pos():
|
||||
player_last_seen = line_of_sight_ray.get_collision_point()
|
||||
|
||||
func add_point_of_interest(point,loudness,max_distance):
|
||||
var current_state_name = state_machine.current_state.name.to_lower()
|
||||
if current_state_name == "idle" or current_state_name == "search":
|
||||
var distance_to_point = global_position.distance_to(point)
|
||||
if distance_to_point <= max_distance:
|
||||
var perceived_loudness = 1/distance_to_point * loudness
|
||||
var add_point = {"point" : point, "loudness" : perceived_loudness}
|
||||
points_of_interest.append(add_point)
|
||||
|
||||
if current_state_name == "idle":
|
||||
change_state_to("search")
|
||||
|
||||
if current_state_name == "search":
|
||||
pass
|
||||
#get new waypoint
|
||||
#state_machine.current_state.investigate_points_of_interest()
|
||||
state_machine.current_state.investigate_points_of_interest(point,loudness,max_distance)
|
||||
|
||||
func investigate_nearby_combat(ally,target):
|
||||
if ally != self:
|
||||
|
||||
Reference in New Issue
Block a user