Started working on implementing bullet flyby sounds spawning
parent
1566707420
commit
3b0d4e8745
|
@ -0,0 +1,7 @@
|
|||
extends Spatial
|
||||
|
||||
#func _ready():
|
||||
# pass
|
||||
|
||||
func _on_SoundPlayer_SoundPlayer_finished():
|
||||
queue_free()
|
|
@ -0,0 +1,27 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://d4iqe4blqefah"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://c5cwnfuw4go1b" path="res://Assets/Audio/SoundPlayer.tscn" id="1"]
|
||||
[ext_resource type="Script" path="res://Assets/Audio/BulletFlyBySoundPlayer.gd" id="2"]
|
||||
[ext_resource type="AudioStream" uid="uid://dlbnvd5ypkwor" path="res://Assets/SFX/Weapons_BulletFlyBy_01.wav" id="3_rujqw"]
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_8lyvt"]
|
||||
|
||||
[node name="BulletFlyBySoundPlayer" type="Node3D"]
|
||||
script = ExtResource( "2" )
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
|
||||
mesh = SubResource( "BoxMesh_8lyvt" )
|
||||
|
||||
[node name="SoundPlayer" parent="." instance=ExtResource( "1" )]
|
||||
SoundClip = "res://Assets/SFX/Weapons_BulletFlyBy_01.wav"
|
||||
AutoPlay = true
|
||||
RandomizePitch = 0.3
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="SoundPlayer" index="0"]
|
||||
stream = ExtResource( "3_rujqw" )
|
||||
|
||||
[connection signal="SoundPlayer_finished" from="SoundPlayer" to="." method="_on_SoundPlayer_SoundPlayer_finished"]
|
||||
[connection signal="finished" from="SoundPlayer/AudioStreamPlayer3D" to="SoundPlayer" method="_on_AudioStreamPlayer3D_finished"]
|
||||
|
||||
[editable path="SoundPlayer"]
|
|
@ -1,6 +1,8 @@
|
|||
extends Node3D
|
||||
# This Scene is meant for playing back sound groups. For simple, singular sound effects use stock Godot nodes, this is meant to play a random sound among a group with variations.
|
||||
|
||||
signal SoundPlayer_finished
|
||||
|
||||
const SFX_dir = "res://Assets/SFX" # all sound clips must reside somewhere in this directory
|
||||
@export_file("*01.wav") var SoundClip := SFX_dir + "/" + "Test_01.wav"
|
||||
@export var AutoPlay := false
|
||||
|
@ -165,3 +167,7 @@ func pick_random():
|
|||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
#func _process(delta):
|
||||
# pass
|
||||
|
||||
|
||||
func _on_AudioStreamPlayer3D_finished():
|
||||
emit_signal(&"SoundPlayer_finished")
|
||||
|
|
|
@ -12,6 +12,7 @@ var casing = preload("res://Assets/Weapons/Handgun/Casing.tscn")
|
|||
var flash = preload("res://Assets/Effects/MuzzleFlash.tscn")
|
||||
var tracer = preload("res://Assets/Effects/BulletTracer.tscn")
|
||||
var impact_wall = preload("res://Assets/Effects/ImpactSparks.tscn")
|
||||
var flyby_sound = preload("res://Assets/Audio/BulletFlyBySoundPlayer.tscn")
|
||||
|
||||
|
||||
# accuracy
|
||||
|
@ -69,8 +70,36 @@ var spread = spread_min
|
|||
if is_multiplayer_authority(): # only do this on the attacker's local instance of the game
|
||||
give_damage(ray['collider'], ray['position'], ray['normal'], 20, self.global_transform.origin, Globals.DamageType.BULLET, 1.0)
|
||||
|
||||
### bullet flyby sounds
|
||||
|
||||
if ray: # if we hit something - use that to evaluate the flyby sound
|
||||
to = ray['position']
|
||||
|
||||
var x := Vector3.ZERO
|
||||
var A = from
|
||||
var B = to
|
||||
|
||||
var AB = B - A
|
||||
var C = get_tree().get_root().get_camera_3d().global_transform.origin
|
||||
|
||||
if A.dot(C) < 0 and B.dot(C) < 0:
|
||||
print("Firing away from the camera")
|
||||
elif A.dot(C) > 0 and B.dot(C) > 0:
|
||||
print("Bullet hit before passing by")
|
||||
else:
|
||||
var d0
|
||||
var d1
|
||||
var X = d0/(d0-d1)
|
||||
var flyby = flyby_sound.instantiate()
|
||||
get_tree().root.add_child(flyby)
|
||||
flyby.global_transform.origin = x
|
||||
|
||||
# TODO - spawn
|
||||
|
||||
return # skip the rest - it's deprecated code
|
||||
|
||||
|
||||
|
||||
####################### DEPRACATED ↓↓↓↓↓↓↓↓
|
||||
|
||||
var impact_vfx
|
||||
|
|
Reference in New Issue