they talk to each other now
This commit is contained in:
1159
assets/spider2.tscn12806005547.tmp
Normal file
1159
assets/spider2.tscn12806005547.tmp
Normal file
File diff suppressed because one or more lines are too long
@@ -12,7 +12,7 @@ config_version=5
|
|||||||
|
|
||||||
config/name="First Person Test"
|
config/name="First Person Test"
|
||||||
config/tags=PackedStringArray("fps")
|
config/tags=PackedStringArray("fps")
|
||||||
run/main_scene="uid://f7e0v1r6ra6c"
|
run/main_scene="uid://cfaydhd6u5bmb"
|
||||||
config/features=PackedStringArray("4.4", "Forward Plus")
|
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||||
config/icon="uid://6svuq1l83al5"
|
config/icon="uid://6svuq1l83al5"
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ script = ExtResource("1_8cuhv")
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.749, 0, 44.3496)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.749, 0, 44.3496)
|
||||||
script = ExtResource("5_ngmqi")
|
script = ExtResource("5_ngmqi")
|
||||||
room_lockdown = true
|
room_lockdown = true
|
||||||
number_of_enemies = 25
|
start_enemies = 50
|
||||||
number_of_drops = 30
|
number_of_drops = 30
|
||||||
|
|
||||||
[node name="EnemySpawner" parent="Level" instance=ExtResource("3_q77vb")]
|
[node name="EnemySpawner" parent="Level" instance=ExtResource("3_q77vb")]
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ var shot_timer = 0.0
|
|||||||
func Enter():
|
func Enter():
|
||||||
initial_timer = initial_wait_time
|
initial_timer = initial_wait_time
|
||||||
alert_sound.play()
|
alert_sound.play()
|
||||||
|
clear_points_of_interest()
|
||||||
|
|
||||||
func Physics_Update(delta):
|
func Physics_Update(delta):
|
||||||
if enemy.is_player_visible():
|
if enemy.is_player_visible():
|
||||||
@@ -57,6 +58,7 @@ func attack():
|
|||||||
|
|
||||||
func fire(barrel):
|
func fire(barrel):
|
||||||
enemy.ammo -= 1
|
enemy.ammo -= 1
|
||||||
|
SignalBus.emit_signal("engaging_target",enemy,enemy.player_last_seen)
|
||||||
var instance_bullet = enemy.bullet.instantiate()
|
var instance_bullet = enemy.bullet.instantiate()
|
||||||
instance_bullet.position = barrel.global_position
|
instance_bullet.position = barrel.global_position
|
||||||
instance_bullet.transform.basis = barrel.global_transform.basis
|
instance_bullet.transform.basis = barrel.global_transform.basis
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ var scan_direction = scan_cone_angle/2
|
|||||||
func Enter():
|
func Enter():
|
||||||
scan_timer = scan_time
|
scan_timer = scan_time
|
||||||
get_new_wander_point()
|
get_new_wander_point()
|
||||||
|
clear_points_of_interest()
|
||||||
|
|
||||||
func Update(delta):
|
func Update(delta):
|
||||||
attack_on_sight()
|
attack_on_sight()
|
||||||
|
|||||||
@@ -32,8 +32,13 @@ func Physics_Update(delta):
|
|||||||
turret_scan(Vector3(0,scan_direction,0),delta)
|
turret_scan(Vector3(0,scan_direction,0),delta)
|
||||||
|
|
||||||
func get_new_point_of_interest():
|
func get_new_point_of_interest():
|
||||||
if enemy.player_last_seen != null and enemy.player_last_seen != move_target:
|
if enemy.player_last_seen != null:
|
||||||
move_target = enemy.player_last_seen
|
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)
|
enemy.nav_agent.set_target_position(move_target)
|
||||||
else:
|
else:
|
||||||
Transitioned.emit(self,"idle")
|
Transitioned.emit(self,"idle")
|
||||||
|
|||||||
@@ -115,6 +115,8 @@ func turret_look3D(delta):
|
|||||||
func turret_scan_look(target,scan_direction,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)
|
enemy.turret_look.global_rotation.y = rotate_to_face2D(enemy.turret_look,target,scan_direction,delta,turret_speed)
|
||||||
|
|
||||||
|
func clear_points_of_interest():
|
||||||
|
enemy.points_of_interest = []
|
||||||
|
|
||||||
func debug_marker(target_pos):
|
func debug_marker(target_pos):
|
||||||
if enemy.debug_tools:
|
if enemy.debug_tools:
|
||||||
|
|||||||
@@ -21,3 +21,4 @@ signal weapon_list_changed()
|
|||||||
|
|
||||||
##ENEMY
|
##ENEMY
|
||||||
signal suspicious_sound(position,loudness,max_distance)
|
signal suspicious_sound(position,loudness,max_distance)
|
||||||
|
signal engaging_target(enemy,target_position)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ var last_enemy : bool = false
|
|||||||
@export var start_health = 3
|
@export var start_health = 3
|
||||||
@export var max_ammo = 10
|
@export var max_ammo = 10
|
||||||
@export var loot_amount = 2
|
@export var loot_amount = 2
|
||||||
|
@export var join_ally_max_distance = 10
|
||||||
@export var nav_agent : NavigationAgent3D
|
@export var nav_agent : NavigationAgent3D
|
||||||
@export var hit_targets : Array[Area3D]
|
@export var hit_targets : Array[Area3D]
|
||||||
@export var visibility_areas : Array[Area3D]
|
@export var visibility_areas : Array[Area3D]
|
||||||
@@ -78,10 +79,11 @@ var ammo
|
|||||||
|
|
||||||
var line_of_sight_target
|
var line_of_sight_target
|
||||||
var player_last_seen
|
var player_last_seen
|
||||||
var point_of_interest
|
var points_of_interest = []
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
SignalBus.suspicious_sound.connect(add_point_of_interest)
|
SignalBus.suspicious_sound.connect(add_point_of_interest)
|
||||||
|
SignalBus.engaging_target.connect(investigate_nearby_combat)
|
||||||
health = start_health
|
health = start_health
|
||||||
ammo = max_ammo
|
ammo = max_ammo
|
||||||
player = level_control.player
|
player = level_control.player
|
||||||
@@ -151,12 +153,29 @@ func cache_player_pos():
|
|||||||
player_last_seen = line_of_sight_ray.get_collision_point()
|
player_last_seen = line_of_sight_ray.get_collision_point()
|
||||||
|
|
||||||
func add_point_of_interest(point,loudness,max_distance):
|
func add_point_of_interest(point,loudness,max_distance):
|
||||||
var distance_to_point = global_position.distance_to(point)
|
var current_state_name = state_machine.current_state.name.to_lower()
|
||||||
if distance_to_point <= max_distance:
|
if current_state_name == "idle" or current_state_name == "search":
|
||||||
var perceived_loudness = 1/distance_to_point * loudness
|
var distance_to_point = global_position.distance_to(point)
|
||||||
var add_point = {"point" : point, "loudness" : perceived_loudness}
|
if distance_to_point <= max_distance:
|
||||||
point_of_interest = add_point
|
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()
|
||||||
|
|
||||||
|
func investigate_nearby_combat(ally,target):
|
||||||
|
if ally != self:
|
||||||
|
var distance_to_ally = global_position.distance_to(ally.global_position)
|
||||||
|
if distance_to_ally < join_ally_max_distance:
|
||||||
|
player_last_seen = target
|
||||||
|
if state_machine.current_state.name.to_lower() == "idle":
|
||||||
|
change_state_to("search")
|
||||||
|
|
||||||
func save():
|
func save():
|
||||||
var save_dict = {
|
var save_dict = {
|
||||||
|
|||||||
Reference in New Issue
Block a user