starting work on enemy hearing

This commit is contained in:
derek
2025-04-29 11:46:55 -05:00
parent a287710a7b
commit 6124a370b4
8 changed files with 31 additions and 2 deletions

View File

@@ -16,10 +16,12 @@ var visibility_timer
func Enter(): func Enter():
super() super()
enemy.cache_player_pos() enemy.cache_player_pos()
visibility_timer = time_before_losing_visual
update_waypoint() update_waypoint()
enemy.points_of_interest = []
visibility_timer = time_before_losing_visual
enemy.turret_material.emission_enabled = true enemy.turret_material.emission_enabled = true
initial_timer = initial_wait_time initial_timer = initial_wait_time
alarm_sound.play() alarm_sound.play()
func update_waypoint(): func update_waypoint():

View File

@@ -34,6 +34,7 @@ func Update(delta: float):
super(delta) super(delta)
attack_on_sight() attack_on_sight()
search_for_suspicious_sounds()
if wander_time > 0: if wander_time > 0:
wander_time -= delta wander_time -= delta

View File

@@ -10,6 +10,10 @@ func Enter():
search_point() search_point()
search_timer = SEARCH_TIME_MAX search_timer = SEARCH_TIME_MAX
func Exit():
enemy.player_last_seen = null
enemy.points_of_interest = []
func Update(delta: float): func Update(delta: float):
super(delta) super(delta)
@@ -19,6 +23,7 @@ func Update(delta: float):
Transitioned.emit(self,"idle") Transitioned.emit(self,"idle")
attack_on_sight() attack_on_sight()
search_for_suspicious_sounds()
search_point() search_point()
if enemy.global_position.distance_to(move_target_adj()) < 1: if enemy.global_position.distance_to(move_target_adj()) < 1:

View File

@@ -40,6 +40,10 @@ func move_target_adj():
var position = move_target() var position = move_target()
return Vector3(position.x,enemy.global_position.y,position.z) return Vector3(position.x,enemy.global_position.y,position.z)
func search_for_suspicious_sounds():
if enemy.points_of_interest != [] and enemy.points_of_interest != null:
Transitioned.emit(self,"search")
func rotate_to_face2D(object,target,delta,turn_speed): func rotate_to_face2D(object,target,delta,turn_speed):
#to allow both nodes and positions to be passed to this function, test the target and use Vector3 coords #to allow both nodes and positions to be passed to this function, test the target and use Vector3 coords
var target_transformed var target_transformed

View File

@@ -18,3 +18,6 @@ signal king_killed()
signal weapon_list_changed() signal weapon_list_changed()
## LEVEL ## LEVEL
##ENEMY
signal suspicious_sound(position,loudness,max_distance)

View File

@@ -81,9 +81,10 @@ var ammo
var line_of_sight_target var line_of_sight_target
var player_last_seen var player_last_seen
var points_of_interest var points_of_interest = []
func _ready(): func _ready():
SignalBus.suspicious_sound.connect(add_point_of_interest)
health = start_health health = start_health
ammo = max_ammo ammo = max_ammo
player = level_control.player player = level_control.player
@@ -161,6 +162,16 @@ func debug_marker():
else: else:
debug_tracker.visible = false debug_tracker.visible = false
func add_point_of_interest(point,loudness,max_distance):
print("SHOT HEARD")
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)
print("POINTS OF INTEREST : ",points_of_interest)
func save(): func save():
var save_dict = { var save_dict = {
"filename" : get_scene_file_path(), "filename" : get_scene_file_path(),

View File

@@ -20,6 +20,8 @@ class_name weapon_resource
@export var smoke_enabled : bool = false @export var smoke_enabled : bool = false
@export var bullet_force_mod = 5.0 @export var bullet_force_mod = 5.0
@export var bullet_speed = 600 @export var bullet_speed = 600
@export var decibels_of_gunfire_sound = 160.0
@export var max_distance_heard = 100 #in meters
@export_group("Gun Assets") @export_group("Gun Assets")
@export var casing : Resource @export var casing : Resource
@export var mag : Resource @export var mag : Resource

View File

@@ -289,6 +289,7 @@ func projectile_initialize():
func bullet_fire(): func bullet_fire():
SignalBus.emit_signal("shot_fired",weapon_info.crosshair_jump_amount) SignalBus.emit_signal("shot_fired",weapon_info.crosshair_jump_amount)
SignalBus.emit_signal("suspicious_sound",global_position,weapon_info.decibels_of_gunfire_sound,weapon_info.max_distance_heard)
audio_fire.play() audio_fire.play()
var bullet_spawn = projectile_initialize() var bullet_spawn = projectile_initialize()
get_tree().current_scene.add_child(bullet_spawn) get_tree().current_scene.add_child(bullet_spawn)