Skip to content

Commit

Permalink
Add hit sfx and hit delay on attacks
Browse files Browse the repository at this point in the history
  • Loading branch information
outfrost committed Apr 26, 2021
1 parent 2d21cd0 commit 79220ed
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 22 deletions.
19 changes: 15 additions & 4 deletions character/Enemy.gd
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
extends KinematicBody2D

export var attack_hit_delay: float = 0.16
export var walk_sounds: Array
export var walk_sound_interval: float = 0.5
export var swing_sounds: Array
export var hit_sounds: Array

var health = 100.0
export var resist_base: float = 0.00
Expand Down Expand Up @@ -50,11 +52,10 @@ func _physics_process(delta:float):
var collision = move_and_collide((nearest_player.global_position - self.global_position).normalized() * self.attack_range,true,true,true)

if collision && collision.collider.has_method("take_damage") && attack_timer >= basic_attack_cooldown :
attack_timer = 0.0
if swing_sounds.size() > 0:
get_node(swing_sounds[randi() % swing_sounds.size()]).play()
collision.collider.take_damage(basic_attack_dmg * basic_attack_multiplier,0,0,0)
attack_timer = 0.00

get_node(swing_sounds[randi() % swing_sounds.size()]).play()
hit(collision.collider)

else:
var towardshome = ((home - self.position).normalized() * self.run_speed)
Expand All @@ -64,6 +65,16 @@ func _physics_process(delta:float):
else:
walk_sound_timer = 0.0

func hit(other: CollisionObject2D):
yield(get_tree().create_timer(attack_hit_delay), "timeout")
if !is_instance_valid(other):
return
if hit_sounds.size() > 0:
get_node(hit_sounds[randi() % hit_sounds.size()]).play()

other.take_damage(basic_attack_dmg * basic_attack_multiplier,0,0,0)


func _process(delta:float):
if nearest_player:
DebugLabel.display(self, nearest_player.position)
Expand Down
72 changes: 63 additions & 9 deletions character/Enemy.tscn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2]
[gd_scene load_steps=19 format=2]

[ext_resource path="res://character/Enemy_SpriteFrames.tres" type="SpriteFrames" id=1]
[ext_resource path="res://character/Enemy.gd" type="Script" id=2]
Expand All @@ -10,6 +10,13 @@
[ext_resource path="res://sound/positional/SFX_SwordSwing_4.wav" type="AudioStream" id=8]
[ext_resource path="res://sound/positional/SFX_SwordSwing_3.wav" type="AudioStream" id=9]
[ext_resource path="res://sound/positional/SFX_SwordSwing_2.wav" type="AudioStream" id=10]
[ext_resource path="res://sound/positional/SFX_SwordHit_2.wav" type="AudioStream" id=11]
[ext_resource path="res://sound/positional/SFX_SwordHit_7.wav" type="AudioStream" id=12]
[ext_resource path="res://sound/positional/SFX_SwordHit_4.wav" type="AudioStream" id=13]
[ext_resource path="res://sound/positional/SFX_SwordHit_3.wav" type="AudioStream" id=14]
[ext_resource path="res://sound/positional/SFX_SwordHit_6.wav" type="AudioStream" id=15]
[ext_resource path="res://sound/positional/SFX_SwordHit_5.wav" type="AudioStream" id=16]
[ext_resource path="res://sound/positional/SFX_SwordHit_1.wav" type="AudioStream" id=17]

[sub_resource type="CircleShape2D" id=1]
radius = 16.0
Expand All @@ -19,6 +26,7 @@ script = ExtResource( 2 )
walk_sounds = [ NodePath("AudioStreamPlayer2DWalk1"), NodePath("AudioStreamPlayer2DWalk2"), NodePath("AudioStreamPlayer2DWalk3"), NodePath("AudioStreamPlayer2DWalk4") ]
walk_sound_interval = 0.32
swing_sounds = [ NodePath("AudioStreamPlayer2DSwing1"), NodePath("AudioStreamPlayer2DSwing2"), NodePath("AudioStreamPlayer2DSwing3"), NodePath("AudioStreamPlayer2DSwing4") ]
hit_sounds = [ NodePath("AudioStreamPlayer2DHit1"), NodePath("AudioStreamPlayer2DHit2"), NodePath("AudioStreamPlayer2DHit3"), NodePath("AudioStreamPlayer2DHit4"), NodePath("AudioStreamPlayer2DHit5"), NodePath("AudioStreamPlayer2DHit6"), NodePath("AudioStreamPlayer2DHit7") ]

[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )
Expand All @@ -30,44 +38,90 @@ offset = Vector2( 0, -16 )

[node name="AudioStreamPlayer2DWalk1" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 4 )
volume_db = -6.0
max_distance = 250.0
volume_db = -9.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DWalk2" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 6 )
volume_db = -6.0
max_distance = 250.0
volume_db = -9.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DWalk3" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 5 )
volume_db = -6.0
max_distance = 250.0
volume_db = -9.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DWalk4" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 3 )
volume_db = -6.0
max_distance = 250.0
volume_db = -9.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DSwing1" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 7 )
volume_db = 6.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DSwing2" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 10 )
volume_db = 6.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DSwing3" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 9 )
volume_db = 6.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DSwing4" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 8 )
volume_db = 6.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit1" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 17 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit2" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 11 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit3" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 14 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit4" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 13 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit5" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 16 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit6" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 15 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit7" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 12 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"
18 changes: 14 additions & 4 deletions character/PlayerCharacter.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ extends KinematicBody2D

export var run_speed: float = 50.0
export var attack_range: float = 32.0
export var attack_hit_delay: float = 0.16
export var walk_sounds: Array
export var walk_sound_interval: float = 0.5
export var swing_sounds: Array
export var hit_sounds: Array

onready var sprite: AnimatedSprite = $AnimatedSprite

Expand Down Expand Up @@ -75,6 +77,7 @@ func _physics_process(delta: float) -> void:

func _input(event: InputEvent) -> void:
if event.is_action_pressed("use"):
get_tree().set_input_as_handled()
if current_lootable:
if !inventory.has(current_lootable.loot1):
inventory[current_lootable.loot1] = 0
Expand All @@ -89,18 +92,25 @@ func _input(event: InputEvent) -> void:
# print("%s (%d)" % [Item.type_str(current_lootable.loot2), current_lootable.loot2_amount])
current_lootable.queue_free()
print_inventory()
get_tree().set_input_as_handled()
elif event.is_action_pressed("attack"):
get_tree().set_input_as_handled()
if swing_sounds.size() > 0:
get_node(swing_sounds[randi() % swing_sounds.size()]).play()
get_node(swing_sounds[randi() % swing_sounds.size()]).play()
var collision = move_and_collide(
last_movement_dir * attack_range,
true,
true,
true)
if collision && collision.collider.has_method("take_damage"):
collision.collider.take_damage(basic_attack_dmg,0,0,0)
get_tree().set_input_as_handled()
hit(collision.collider)

func hit(other: CollisionObject2D):
yield(get_tree().create_timer(attack_hit_delay), "timeout")
if !is_instance_valid(other):
return
other.take_damage(basic_attack_dmg,0,0,0)
if hit_sounds.size() > 0:
get_node(hit_sounds[randi() % hit_sounds.size()]).play()

func entered_lootable_range(lootable):
print_debug(lootable)
Expand Down
64 changes: 59 additions & 5 deletions character/PlayerCharacter.tscn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2]
[gd_scene load_steps=19 format=2]

[ext_resource path="res://character/PlayerCharacter.gd" type="Script" id=1]
[ext_resource path="res://character/PlayerCharacter_SpriteFrames.tres" type="SpriteFrames" id=2]
Expand All @@ -10,6 +10,13 @@
[ext_resource path="res://sound/positional/SFX_SwordSwing_4.wav" type="AudioStream" id=8]
[ext_resource path="res://sound/positional/SFX_SwordSwing_3.wav" type="AudioStream" id=9]
[ext_resource path="res://sound/positional/SFX_SwordSwing_2.wav" type="AudioStream" id=10]
[ext_resource path="res://sound/positional/SFX_SwordHit_2.wav" type="AudioStream" id=11]
[ext_resource path="res://sound/positional/SFX_SwordHit_7.wav" type="AudioStream" id=12]
[ext_resource path="res://sound/positional/SFX_SwordHit_4.wav" type="AudioStream" id=13]
[ext_resource path="res://sound/positional/SFX_SwordHit_3.wav" type="AudioStream" id=14]
[ext_resource path="res://sound/positional/SFX_SwordHit_6.wav" type="AudioStream" id=15]
[ext_resource path="res://sound/positional/SFX_SwordHit_5.wav" type="AudioStream" id=16]
[ext_resource path="res://sound/positional/SFX_SwordHit_1.wav" type="AudioStream" id=17]

[sub_resource type="CircleShape2D" id=1]
radius = 16.0
Expand All @@ -20,6 +27,7 @@ run_speed = 70.0
walk_sounds = [ NodePath("AudioStreamPlayerWalk1"), NodePath("AudioStreamPlayerWalk2"), NodePath("AudioStreamPlayerWalk3"), NodePath("AudioStreamPlayerWalk4") ]
walk_sound_interval = 0.32
swing_sounds = [ NodePath("AudioStreamPlayer2DSwing1"), NodePath("AudioStreamPlayer2DSwing2"), NodePath("AudioStreamPlayer2DSwing3"), NodePath("AudioStreamPlayer2DSwing4") ]
hit_sounds = [ NodePath("AudioStreamPlayer2DHit1"), NodePath("AudioStreamPlayer2DHit2"), NodePath("AudioStreamPlayer2DHit3"), NodePath("AudioStreamPlayer2DHit4"), NodePath("AudioStreamPlayer2DHit5"), NodePath("AudioStreamPlayer2DHit6"), NodePath("AudioStreamPlayer2DHit7") ]

[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )
Expand All @@ -31,40 +39,86 @@ offset = Vector2( 0, -16 )

[node name="AudioStreamPlayerWalk1" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 7 )
volume_db = -10.0
volume_db = -12.0
bus = "Effects"

[node name="AudioStreamPlayerWalk2" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 6 )
volume_db = -10.0
volume_db = -12.0
bus = "Effects"

[node name="AudioStreamPlayerWalk3" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 4 )
volume_db = -10.0
volume_db = -12.0
bus = "Effects"

[node name="AudioStreamPlayerWalk4" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 5 )
volume_db = -10.0
volume_db = -12.0
bus = "Effects"

[node name="AudioStreamPlayer2DSwing1" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 3 )
volume_db = 6.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DSwing2" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 10 )
volume_db = 6.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DSwing3" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 9 )
volume_db = 6.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DSwing4" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 8 )
volume_db = 6.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit1" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 17 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit2" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 11 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit3" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 14 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit4" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 13 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit5" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 16 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit6" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 15 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

[node name="AudioStreamPlayer2DHit7" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource( 12 )
volume_db = 3.0
max_distance = 200.0
bus = "Effects"

0 comments on commit 79220ed

Please sign in to comment.