From 818b25417abfbc9a75ba2880c9d8156f5f275ba7 Mon Sep 17 00:00:00 2001 From: Derek Date: Mon, 4 Nov 2024 19:58:51 -0600 Subject: [PATCH] tweaked bullet and pick up method --- assets/blockout_2.tscn | 1 - assets/casing_2.tscn | 2 +- assets/die_particles.tscn | 6 ++-- assets/player.tscn | 6 ++-- scripts/bullet.gd | 59 +++++++++++++++++++-------------------- scripts/player.gd | 33 ++++++++++++++-------- 6 files changed, 56 insertions(+), 51 deletions(-) diff --git a/assets/blockout_2.tscn b/assets/blockout_2.tscn index d54777c..638b60f 100644 --- a/assets/blockout_2.tscn +++ b/assets/blockout_2.tscn @@ -759,7 +759,6 @@ health_drop_enabled = false [node name="Player" parent="." instance=ExtResource("9_3usor")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.137423, 1.78365, 12.8627) -AUDIO = false [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_b2qms") diff --git a/assets/casing_2.tscn b/assets/casing_2.tscn index 7f1e094..c29ac03 100644 --- a/assets/casing_2.tscn +++ b/assets/casing_2.tscn @@ -10,7 +10,7 @@ height = 0.121962 radius = 0.0314789 [node name="casing_2" type="RigidBody3D" groups=["scene_rigidbody", "spawned"]] -collision_layer = 32 +collision_layer = 0 collision_mask = 37 mass = 0.1 continuous_cd = true diff --git a/assets/die_particles.tscn b/assets/die_particles.tscn index aa0c238..32e9115 100644 --- a/assets/die_particles.tscn +++ b/assets/die_particles.tscn @@ -4,7 +4,7 @@ [ext_resource type="AudioStream" uid="uid://wd061pl0d7rl" path="res://assets/Audio/deep-low-explosion-SBA-300054677.wav" id="2_ddmln"] [ext_resource type="Texture2D" uid="uid://dmyn4eq2r12ue" path="res://assets/Models/spider1.albedoRAW.png" id="3_81mhs"] [ext_resource type="Texture2D" uid="uid://dqhke14ulten2" path="res://assets/Models/spider1.roughnessRAW.png" id="4_ahnbu"] -[ext_resource type="Texture2D" uid="uid://r7awur11yerj" path="res://assets/Models/spider1.gunbarrel.albedo.png" id="4_pb8pm"] +[ext_resource type="Texture2D" uid="uid://b4s3w1qnqcmgq" path="res://assets/Models/spider1.gunbarrel.albedo.png" id="4_pb8pm"] [ext_resource type="Texture2D" uid="uid://c54kwbix1mo58" path="res://assets/Models/spider1.turret.png" id="5_hogev"] [ext_resource type="Texture2D" uid="uid://cvi0upsh0e1mu" path="res://assets/Models/spider1.turret.roughness1.png" id="6_0fxbp"] @@ -257,7 +257,7 @@ points = PackedVector3Array(0.0373867, 0.506736, 0.264769, -0.356717, -0.359168, script = ExtResource("1_frf2k") audio_explode = NodePath("Audio/Die") -[node name="RigidBody3D" type="RigidBody3D" parent="." groups=["scene_rigidbody"]] +[node name="RigidBody3D" type="RigidBody3D" parent="." groups=["moveable", "scene_rigidbody"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00161432, 1.77527, -0.0469466) collision_layer = 32 collision_mask = 37 @@ -288,7 +288,7 @@ draw_pass_1 = SubResource("BoxMesh_00qq1") stream = ExtResource("2_ddmln") volume_db = 10.0 -[node name="body" type="RigidBody3D" parent="." groups=["scene_rigidbody"]] +[node name="body" type="RigidBody3D" parent="." groups=["moveable", "scene_rigidbody"]] collision_layer = 32 collision_mask = 37 mass = 30.0 diff --git a/assets/player.tscn b/assets/player.tscn index 4a5e145..ca72387 100644 --- a/assets/player.tscn +++ b/assets/player.tscn @@ -1,7 +1,6 @@ -[gd_scene load_steps=26 format=3 uid="uid://drwae3loscbw7"] +[gd_scene load_steps=25 format=3 uid="uid://drwae3loscbw7"] [ext_resource type="Script" path="res://scripts/player.gd" id="1_x7wms"] -[ext_resource type="PackedScene" uid="uid://dcmno6wafk5hg" path="res://assets/dead_player.tscn" id="2_4hoys"] [ext_resource type="Script" path="res://scripts/recoil.gd" id="3_405jc"] [ext_resource type="FontFile" uid="uid://d2h2tjhxiv5wo" path="res://assets/fonts/White On Black.ttf" id="3_mbuvp"] [ext_resource type="Script" path="res://scripts/AmmoCounter.gd" id="4_8cy44"] @@ -69,7 +68,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.11359, 0) collision_layer = 6 collision_mask = 11 script = ExtResource("1_x7wms") -dead_player = ExtResource("2_4hoys") SENSITIVITY = 0.008 BOB_AMP = 0.085 weapon_holder = NodePath("Head/Recoil/Camera3D/WeaponHolder") @@ -166,7 +164,7 @@ texture = ExtResource("6_5m60e") script = ExtResource("7_pnp4a") [node name="BulletRay" type="RayCast3D" parent="Head/Recoil/Camera3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.462246) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.487738) target_position = Vector3(0, 0, -200) collision_mask = 5 collide_with_areas = true diff --git a/scripts/bullet.gd b/scripts/bullet.gd index 8c9d590..67fc661 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -34,38 +34,35 @@ func _physics_process(delta): if distance_from_player.length() > 1.5: visible = true - - -func _on_body_entered(body: Node) -> void: - - if !body.is_in_group("player") and bullet_active: - print("BODY HIT - " + str(body)) - #Break Breakable Objects - if body.is_in_group("breakable"): - body.breaking(linear_velocity) - - if body.is_in_group("switch"): - body.hit() - - if ray.is_colliding() and !ray.get_collider().is_in_group("player"): - #Bullet Hole Effect - ray.get_collider().add_child(instance_bullethole) - instance_bullethole.global_transform.origin = ray.get_collision_point() - if (abs(ray.get_collision_normal().y) > 0.99): - instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3(0,0,1)) - else: - instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal()) - - #Hit Enemies - if ray.get_collider().is_in_group("enemy_target"): - hit_indicator.play() - enemy_particles.emitting = true - SignalBus.emit_signal("enemy_hit") - ray.get_collider().hit(bullet_damage) + if ray.is_colliding() and !ray.get_collider().is_in_group("player"): mesh.visible = false - bullet_active = false - particles.emitting = true - await get_tree().create_timer(1).timeout + ray.enabled = false + + #bullethole effect + ray.get_collider().add_child(instance_bullethole) + instance_bullethole.global_transform.origin = ray.get_collision_point() + if (abs(ray.get_collision_normal().y) > 0.99): + instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3(0,0,1)) + else: + instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal()) + + if ray.get_collider().is_in_group("switch"): + ray.get_collider().hit() + + #move rigidbodies + if ray.get_collider().is_in_group("scene_rigidbody"): + ray.get_collider().linear_velocity += transform.basis * Vector3(0,0,-1 * bullet_force_mod) + + if ray.get_collider().is_in_group("breakable"): + var current_velocity = transform.basis * Vector3(0,0,-1 * bullet_force_mod) + ray.get_collider().breaking(current_velocity) + + + if ray.get_collider().is_in_group("enemy_target"): + hit_indicator.play() + enemy_particles.emitting = true + ray.get_collider().hit(bullet_damage) + await get_tree().create_timer(1.0).timeout queue_free() diff --git a/scripts/player.gd b/scripts/player.gd index 929b2f9..166d218 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -26,7 +26,6 @@ var rng = RandomNumberGenerator.new() @export_group("Game Settings") @export var AUDIO = true -@export var dead_player : Resource @export_group("Player Movement") @export var DASH_STAM_REQ = 10 @@ -50,7 +49,7 @@ var start_sensitivity #@export var gun : Node - +@onready var dead_player : Resource = load("res://assets/dead_cam.tscn") @onready var pause_menu: Control = $Head/Recoil/Camera3D/PauseMenu @onready var gun_ray = $Head/Recoil/Camera3D/GunRay @onready var level_control = get_tree().current_scene @@ -80,6 +79,7 @@ var held_item_linear_damp_cache var held_item_angular_damp_cache var held_item_gravity_cache var held_item_mass_cache +var held_item_rotation = Vector3(0,0,0) # Slow Down Variables var remaining_stamina = MAX_STAMINA @@ -298,15 +298,22 @@ func _physics_process(delta): #Weapon Swap Up if Input.is_action_just_pressed("scroll_up") and !gun.anim_player.is_playing(): - if level_control.held_guns.size() > 1: - gun.anim_player.play("swap_out") - level_control.gun_spawn(level_control.current_gun_index + 1) + if held_item == null: + if level_control.held_guns.size() > 1: + gun.anim_player.play("swap_out") + level_control.gun_spawn(level_control.current_gun_index + 1) + else: + held_item_rotation.y += deg_to_rad(45) + #Weapon Swap Down if Input.is_action_just_pressed("scroll_down") and !gun.anim_player.is_playing(): - if level_control.held_guns.size() > 1: - gun.anim_player.play("swap_out") - level_control.gun_spawn(level_control.current_gun_index - 1) - + if held_item == null: + if level_control.held_guns.size() > 1: + gun.anim_player.play("swap_out") + level_control.gun_spawn(level_control.current_gun_index - 1) + else: + held_item_rotation.y -= deg_to_rad(45) + # Weapon Swap Number 1 if Input.is_action_just_pressed("numb_1") and !gun.anim_player.is_playing(): weapon_select(0) @@ -328,7 +335,8 @@ func _physics_process(delta): if held_item != null: var held_force_dir = moveable_holder.global_position - held_item.global_position held_item.set_constant_force(held_force_dir * 30) - #held_item.rotation = lerp(held_item.rotation, rotation, delta) + held_item.rotation = lerp(held_item.rotation, held_item_rotation, delta) + print("HELD ITEM ROTATION " + str(rad_to_deg(held_item_rotation.y))) #break when moved too far away var distance_from_player = abs(self.global_position - held_item.global_position) @@ -353,6 +361,8 @@ func _physics_process(delta): if interact_ray.get_collider().is_in_group("scene_rigidbody"): kick_audio.play() interact_ray.get_collider().linear_velocity += transform.basis * Vector3(0,0,-KICK_AMOUNT) + if held_item != null: + release_moveable() @@ -435,7 +445,7 @@ func toggle_hud(hud_on): func grab_moveable(body): moveable_holder.global_position = body.global_position held_item = body - + held_item_rotation = body.rotation #cache rigidbody settings held_item_linear_damp_cache = body.linear_damp held_item_angular_damp_cache = body.angular_damp @@ -449,6 +459,7 @@ func grab_moveable(body): held_item.gravity_scale = 0 func release_moveable(): + held_item_rotation = Vector3(0,0,0) held_item.gravity_scale = held_item_gravity_cache held_item.linear_damp = held_item_linear_damp_cache held_item.angular_damp = held_item_angular_damp_cache