From 29bf99d59e071f0f0ab4a142e4f042c29e15188e Mon Sep 17 00:00:00 2001 From: unfa Date: Sun, 24 Oct 2021 16:25:04 +0200 Subject: [PATCH] Reimplemented bullet hit effects in the new damage system. --- Game/Assets/Characters/Player.gd | 10 +++++++++- Game/Assets/Weapons/Weapon.gd | 29 ++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/Game/Assets/Characters/Player.gd b/Game/Assets/Characters/Player.gd index 8eb1ccf..b2b36a2 100644 --- a/Game/Assets/Characters/Player.gd +++ b/Game/Assets/Characters/Player.gd @@ -1,5 +1,7 @@ extends CharacterBody3D +var impact_player = preload("res://Assets/Effects/ImpactBlood.tscn") + var max_health = 100 var health = max_health: set(value): @@ -351,7 +353,13 @@ func _process(delta): if not dead: rpc(&'moan') # all puppets must scream! - + + # spawn the bullet hit effect + var impact_vfx = impact_player.instantiate() + impact_vfx.global_transform = impact_vfx.global_transform.looking_at(hit_normal) + impact_vfx.global_transform.origin = hit_position + get_tree().root.add_child(impact_vfx) + @rpc(any_peer, call_local, reliable) func spawn(spawn_transform: Transform3D): dead = false diff --git a/Game/Assets/Weapons/Weapon.gd b/Game/Assets/Weapons/Weapon.gd index 8bd4f09..bf48096 100644 --- a/Game/Assets/Weapons/Weapon.gd +++ b/Game/Assets/Weapons/Weapon.gd @@ -12,7 +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 impact_player = preload("res://Assets/Effects/ImpactBlood.tscn") + # accuracy var spread_min = 1 @@ -66,6 +66,8 @@ var spread = spread_min return # skip the rest - it's deprecated code + ####################### DEPRACATED ↓↓↓↓↓↓↓↓ + var impact_vfx if ray: # did we hit anything? @@ -107,22 +109,29 @@ var spread = spread_min main.rpc(&'player_list_update', main.player_list.get(ray['collider'].get_multiplayer_authority()).serialize(), ray['collider'].get_multiplayer_authority()) main.update_hud() - impact_vfx = impact_player.instantiate() +# impact_vfx = impact_player.instantiate() else: - impact_vfx = impact_wall.instantiate() +# impact_vfx = impact_wall.instantiate() + pass - if impact_vfx != null: - impact_vfx.global_transform = impact_vfx.global_transform.looking_at(ray['normal']) - impact_vfx.global_transform.origin = ray['position'] - get_tree().root.add_child(impact_vfx) - +# if impact_vfx != null: +# impact_vfx.global_transform = impact_vfx.global_transform.looking_at(ray['normal']) +# impact_vfx.global_transform.origin = ray['position'] +# get_tree().root.add_child(impact_vfx) +# #print(ray) + + ####################### DEPRACATED ↑↑↑↑↑↑↑↑ func give_damage(target: Node, hit_position: Vector3, hit_normal: Vector3, damage: int, source_position: Vector3, type: Globals.DamageType, push: float): if target.has_method(&'take_damage'): # we've hit a player or something else - the ywill handle everything like effects etc. target.rpc(&'take_damage', get_multiplayer_authority(), hit_position, hit_normal, damage, source_position, type, push) else: - pass # TODO take data from the material of the target and spawn an appropriate hit effect + # TODO take data from the material of the target and spawn an appropriate hit effect + var impact_vfx = impact_wall.instantiate() + impact_vfx.global_transform = impact_vfx.global_transform.looking_at(hit_normal) + impact_vfx.global_transform.origin = hit_position + get_tree().root.add_child(impact_vfx) func trigger(index: int, active: bool) -> void: #print("Weapon " + str(name) + ", Trigger " + str(index) + ", active: " + str(active)) @@ -141,5 +150,7 @@ func trigger(index: int, active: bool) -> void: # Called when the node enters the scene tree for the first time. func _ready(): + + # align the sound source with the head to produce balanced stereo pass #$SFX/Shoot.global_transform = camera.global_transform