reloading works and returns to idle. still need to fix idle scanning
This commit is contained in:
BIN
assets/Audio/Enemy SFX/servo loop_mixdown.wav
Normal file
BIN
assets/Audio/Enemy SFX/servo loop_mixdown.wav
Normal file
Binary file not shown.
24
assets/Audio/Enemy SFX/servo loop_mixdown.wav.import
Normal file
24
assets/Audio/Enemy SFX/servo loop_mixdown.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://baf2pywa43qeu"
|
||||
path="res://.godot/imported/servo loop_mixdown.wav-b041ad0177f5fc89f0a6f0bc2694d0f5.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/Audio/Enemy SFX/servo loop_mixdown.wav"
|
||||
dest_files=["res://.godot/imported/servo loop_mixdown.wav-b041ad0177f5fc89f0a6f0bc2694d0f5.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=2
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
assets/Audio/Enemy SFX/servo-motor-SBA-300109173 - LOOP.mp3
Normal file
BIN
assets/Audio/Enemy SFX/servo-motor-SBA-300109173 - LOOP.mp3
Normal file
Binary file not shown.
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://rfcd10vkegto"
|
||||
path="res://.godot/imported/servo-motor-SBA-300109173 - LOOP.mp3-463fc87717770b39917f7522526876eb.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/Audio/Enemy SFX/servo-motor-SBA-300109173 - LOOP.mp3"
|
||||
dest_files=["res://.godot/imported/servo-motor-SBA-300109173 - LOOP.mp3-463fc87717770b39917f7522526876eb.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@@ -816,7 +816,7 @@ random_volume_offset_db = 0.3
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("24_ekglj")
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_4ecf4"]
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_fborx"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("25_lr3lm")
|
||||
@@ -1090,8 +1090,8 @@ pitch_scale = 0.7
|
||||
[node name="Reload" type="AudioStreamPlayer3D" parent="AUIDO"]
|
||||
stream = SubResource("AudioStreamRandomizer_ekglj")
|
||||
|
||||
[node name="Servo" type="AudioStreamPlayer3D" parent="AUIDO"]
|
||||
stream = SubResource("AudioStreamRandomizer_4ecf4")
|
||||
[node name="ServoSingle" type="AudioStreamPlayer3D" parent="AUIDO"]
|
||||
stream = SubResource("AudioStreamRandomizer_fborx")
|
||||
volume_db = -2.5
|
||||
unit_size = 5.0
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -3,7 +3,6 @@ class_name EnemyAttack
|
||||
|
||||
var heartbeat : float = 3.0
|
||||
|
||||
@export var mag_size = 5
|
||||
@export var between_shot_time : Vector2 = Vector2(.5,2.0)
|
||||
@export var reload_time : float = 7.0
|
||||
|
||||
@@ -16,7 +15,7 @@ var shot_timer = 0.0
|
||||
func Enter():
|
||||
super()
|
||||
update_waypoint()
|
||||
ammo = mag_size
|
||||
ammo = enemy.max_ammo
|
||||
|
||||
func update_waypoint():
|
||||
enemy.nav_agent.set_target_position(player.global_position)
|
||||
@@ -33,7 +32,7 @@ func Update(delta):
|
||||
else:
|
||||
if enemy.turret_look_next.is_colliding() and enemy.turret_look_next.get_collider().is_in_group("player"):
|
||||
shot_timer = randf_range(between_shot_time.x,between_shot_time.y)
|
||||
ammo -= 1
|
||||
ammo -= 2
|
||||
enemy.turret_material.emission_enabled = true
|
||||
await get_tree().create_timer(.1).timeout
|
||||
attack()
|
||||
@@ -64,7 +63,7 @@ func attack():
|
||||
|
||||
func reload():
|
||||
await get_tree().create_timer(reload_time).timeout
|
||||
ammo = mag_size
|
||||
ammo = enemy.max_ammo
|
||||
|
||||
func fire(barrel):
|
||||
var instance_bullet = enemy.bullet.instantiate()
|
||||
|
||||
@@ -40,6 +40,10 @@ func Update(delta: float):
|
||||
|
||||
func Physics_Update(delta : float):
|
||||
if enemy:
|
||||
#turret transform
|
||||
enemy.turret_look_next.rotation = Vector3(0,scan_direction,0)
|
||||
enemy.turret_look.rotation = lerp(enemy.turret_look.rotation,enemy.turret_look_next.rotation,delta * enemy.turret_look_speed)
|
||||
|
||||
var destination = enemy.nav_agent.get_next_path_position()
|
||||
var local_destination = destination - enemy.global_position
|
||||
var direction = local_destination.normalized()
|
||||
@@ -49,7 +53,6 @@ func Physics_Update(delta : float):
|
||||
var look_target = enemy.spider_look_next.global_rotation.y
|
||||
enemy.global_rotation.y = lerp(enemy.global_rotation.y,look_target,delta * 3)
|
||||
|
||||
enemy.turret_look.rotation.y = lerp(enemy.turret_look.rotation.y,enemy.spider_look_next.rotation.y + deg_to_rad(scan_direction),delta * enemy.turret_look_speed)
|
||||
|
||||
if enemy.turret_look.is_colliding() and enemy.turret_look.get_collider() is Player:
|
||||
Transitioned.emit(self,"attack")
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
extends EnemyState
|
||||
class_name EnemyReload
|
||||
|
||||
@export var reload_time : float = 7.0
|
||||
@export var reload_sound : AudioStreamPlayer3D
|
||||
@export var run_distance : float = 3
|
||||
|
||||
@@ -13,11 +12,11 @@ var remaining_bullets
|
||||
func Enter():
|
||||
super()
|
||||
remaining_bullets = enemy.max_ammo
|
||||
enemy.servo_audio.play()
|
||||
enemy.servo_single.play()
|
||||
|
||||
func Exit():
|
||||
super()
|
||||
enemy.servo_audio.play()
|
||||
enemy.servo_single.play()
|
||||
|
||||
func update_waypoint():
|
||||
var direction = (player.global_position - enemy.global_position).normalized()
|
||||
@@ -30,7 +29,7 @@ func Update(delta):
|
||||
update_waypoint()
|
||||
|
||||
if remaining_bullets > 0:
|
||||
if !reload_sound.is_playing() and !enemy.servo_audio.is_playing():
|
||||
if !reload_sound.is_playing():
|
||||
remaining_bullets -= 1
|
||||
reload_sound.play()
|
||||
else:
|
||||
@@ -51,7 +50,10 @@ func Physics_Update(delta):
|
||||
enemy.global_rotation.y = lerp(enemy.global_rotation.y,look_target,delta * 3)
|
||||
|
||||
func finished_reload():
|
||||
if enemy.turret_look_next.is_colliding() and enemy.turret_look_next.get_collider() is Player:
|
||||
Transitioned.emit(self,"attack")
|
||||
if enemy.turret_look_next.is_colliding():
|
||||
if enemy.turret_look_next.get_collider() is Player:
|
||||
Transitioned.emit(self,"attack")
|
||||
else:
|
||||
Transitioned.emit(self,"idle")
|
||||
else:
|
||||
Transitioned.emit(self,"idle")
|
||||
|
||||
@@ -8,7 +8,7 @@ var last_enemy : bool = false
|
||||
@export var start_health = 3
|
||||
@export var SPEED = 3.0
|
||||
@export var turret_look_speed = 6
|
||||
@export var max_ammo = 5
|
||||
@export var max_ammo = 10
|
||||
@export var loot_amount = 2
|
||||
@export var nav_agent : NavigationAgent3D
|
||||
|
||||
@@ -55,7 +55,8 @@ $body/leg4/foot4/foot4outline,
|
||||
$body/leg4/leg4outline,
|
||||
$body/bodyoutline]
|
||||
@onready var health_bar_sprite: Sprite3D = $HealthBarSprite
|
||||
@onready var servo_audio: AudioStreamPlayer3D = $AUIDO/Servo
|
||||
@onready var servo_single: AudioStreamPlayer3D = $AUIDO/ServoSingle
|
||||
@onready var servo_loop: AudioStreamPlayer3D = $AUIDO/ServoLoop
|
||||
|
||||
|
||||
var gravity = 9.8
|
||||
@@ -73,6 +74,7 @@ var player_last_seen
|
||||
var knocked = false
|
||||
var stunned = false
|
||||
var health
|
||||
var turret_current_moving_speed
|
||||
|
||||
func _ready():
|
||||
health = start_health
|
||||
@@ -87,6 +89,9 @@ func _ready():
|
||||
|
||||
func _process(delta):
|
||||
move_and_slide()
|
||||
turret_current_moving_speed = (turret_look_next.rotation - turret_look.rotation).length()
|
||||
#if turret_current_moving_speed > 1:
|
||||
#servo_single.play()
|
||||
|
||||
|
||||
func stun():
|
||||
@@ -106,9 +111,3 @@ func save():
|
||||
"health" : health
|
||||
}
|
||||
return save_dict
|
||||
|
||||
func _on_area_3d_body_entered(body: Node3D) -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
func _exit_tree() -> void:
|
||||
get_parent().enemies.erase(self)
|
||||
|
||||
Reference in New Issue
Block a user