diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d9a42ed --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "godotTools.editorPath.godot4": "c:\\Program Files\\Godot_v4.2.2-stable_win64.exe\\Godot_v4.2.2-stable_win64.exe" +} \ No newline at end of file diff --git a/assets/mac_10.tscn b/assets/mac_10.tscn index d97c05d..bc3c5ad 100644 --- a/assets/mac_10.tscn +++ b/assets/mac_10.tscn @@ -219,11 +219,14 @@ tracks/7/path = NodePath(".") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.28), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0.28, 1.59), +"transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], "method": &"spawn_mag" +}, { +"args": [], +"method": &"reload_finished" }] } @@ -317,7 +320,6 @@ _data = { } [node name="mac10" node_paths=PackedStringArray("flare_light", "anim_player", "barrel_raycast", "casing_ejector", "mag_ejector", "audio_fire", "audio_empty", "audio_reload") instance=ExtResource("1_nb4p5")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.247, -0.222) script = ExtResource("2_6i1l4") max_ammo = 30 random_spread_amt = 1.5 diff --git a/assets/pistol1.tscn b/assets/pistol1.tscn index ed817a3..748cb1b 100644 --- a/assets/pistol1.tscn +++ b/assets/pistol1.tscn @@ -88,63 +88,68 @@ step = 0.01 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("mac10:position") +tracks/0/path = NodePath("gun:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 0.3, 0.87, 0.93, 1.22, 1.6), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.3, 0.72, 1.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, -"values": [Vector3(0, 0, 0), Vector3(-0.300933, 0.313207, 1.19209e-07), Vector3(-0.434608, 0.186498, -0.0340296), Vector3(-0.101334, 0.396998, -0.241881), Vector3(0.0150149, 0.258868, -0.212029), Vector3(0, 0, 0)] +"values": [Vector3(0, -0.000397999, 0), Vector3(-0.655909, 0.59805, 0), Vector3(-0.450443, 0.73385, 0), Vector3(0, -0.000397999, 0)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("mac10:rotation") +tracks/1/path = NodePath("gun:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(0, 0.3, 0.87, 0.93, 1.22, 1.6), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.3, 0.72, 1.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, -"values": [Vector3(0, -1.5708, 0), Vector3(-0.232886, -1.07885, -0.764517), Vector3(-0.629713, -1.24344, 0.0923291), Vector3(-0.492603, -1.40009, 0.121521), Vector3(-0.372059, -1.53262, 0.126735), Vector3(0, -1.5708, 0)] +"values": [Vector3(0, -1.5708, 0), Vector3(-0.65485, 0.0430034, -1.67829), Vector3(-0.742135, -0.58273, -1.29047), Vector3(0, -1.5708, 0)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("mac10/chargerpull:position") +tracks/2/path = NodePath("gun/mag:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), +"times": PackedFloat32Array(0.27, 0.78, 0.97), +"transitions": PackedFloat32Array(1, 1, 1), "update": 0, -"values": [] +"values": [Vector3(0.00225297, 0.0306008, -2.98023e-08), Vector3(0.002, -2, 0), Vector3(0.00225297, 0.0306008, -2.98023e-08)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("mac10/mag:position") +tracks/3/path = NodePath("gun/mag:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0.29, 0.75, 0.97), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0.331642, -0.46631, 0.00448097), Vector3(0.332, -4, 0.004), Vector3(0.331642, -0.46631, 0.00448097)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("mac10/mag:visible") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0.27, 0.28, 0.75, 0.77), +"times": PackedFloat32Array(0.23, 0.26, 0.82, 0.83), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [true, false, false, true] } +tracks/4/type = "method" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath(".") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.26, 1.6), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"spawn_mag" +}, { +"args": [], +"method": &"reload_finished" +}] +} [sub_resource type="Animation" id="Animation_bsc1a"] resource_name = "shoot" @@ -220,8 +225,7 @@ audio_reload = NodePath("Audio/Reload") transform = Transform3D(-3.23167e-06, 0, -0.892728, 0, 0.892728, 0, 0.892728, 0, -3.23167e-06, 0, -0.000397999, 0) [node name="mag" parent="gun" index="0"] -transform = Transform3D(0.0897307, -0.048904, 1.59741e-16, 0.012226, 0.358923, 1.76728e-18, -4.44089e-16, 2.22045e-16, 0.0323253, 0.00225294, 0.0306008, -3.12148e-10) -visible = false +transform = Transform3D(0.0897307, -0.048904, -9.31323e-10, 0.012226, 0.358923, 1.74623e-10, 3.72529e-09, -1.86265e-09, 0.0323253, 0.00225297, 0.0306008, -2.98023e-08) [node name="slide" parent="gun" index="1"] transform = Transform3D(0.579973, 0, 0, 0, 0.579973, -1.0175e-10, 1.16415e-10, 7.27596e-11, 0.579973, 0, 0, 0) diff --git a/assets/player.tscn b/assets/player.tscn index 51363a4..2cb84bd 100644 --- a/assets/player.tscn +++ b/assets/player.tscn @@ -1,11 +1,10 @@ -[gd_scene load_steps=17 format=3 uid="uid://drwae3loscbw7"] +[gd_scene load_steps=16 format=3 uid="uid://drwae3loscbw7"] [ext_resource type="Script" path="res://scripts/player.gd" id="1_x7wms"] [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"] [ext_resource type="Texture2D" uid="uid://mcay8s80071h" path="res://assets/UI/Crosshair/SVG/Reticle 1_svg.svg" id="6_5m60e"] [ext_resource type="Script" path="res://scripts/StaminaCounter.gd" id="6_bgi8o"] -[ext_resource type="PackedScene" uid="uid://brl0bsqjl5dg3" path="res://assets/mac_10.tscn" id="6_o1rq6"] [ext_resource type="Script" path="res://scripts/UIScreenAdjust.gd" id="7_pnp4a"] [ext_resource type="AudioStream" uid="uid://bki17g7j4kqn4" path="res://assets/Audio/PickupSound Mixdown 3.wav" id="8_dwqsx"] [ext_resource type="Texture2D" uid="uid://dhgyj08g1ge2o" path="res://assets/UI/SVG/hitmarkersvg.svg" id="8_kupqh"] @@ -33,11 +32,12 @@ size = Vector3(10, 5.48804, 10) [node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("weapon_holder", "gun") groups=["player"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.11359, 0) collision_layer = 3 +safe_margin = 0.2 script = ExtResource("1_x7wms") weapon_holder = NodePath("Head/Camera3D/WeaponHolder") weapon_sway_amount = 0.1 weapon_rotation_amount = 0.1 -gun = NodePath("Head/Camera3D/WeaponHolder/mac10") +gun = NodePath("") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] visible = false @@ -56,11 +56,8 @@ current = true [node name="WeaponHolder" type="Node3D" parent="Head/Camera3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0341401, -0.111267) -[node name="mac10" parent="Head/Camera3D/WeaponHolder" instance=ExtResource("6_o1rq6")] -transform = Transform3D(0.699692, 0.000362423, 0.0207632, 0, 0.699893, -0.0122167, -0.0207664, 0.0122113, 0.699585, 0.445836, -0.15786, -0.767655) - [node name="WeaponSpawner" type="Node3D" parent="Head/Camera3D/WeaponHolder"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.44954, -0.336461, -0.703911) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.44954, -0.202025, -1.03649) [node name="AmmoCounter" type="Label" parent="Head/Camera3D"] offset_right = 3840.0 diff --git a/godot-git-plugin-v3.1.1/addons/godot-git-plugin/win64/~libgit_plugin.windows.editor.x86_64.dll b/godot-git-plugin-v3.1.1/addons/godot-git-plugin/win64/~libgit_plugin.windows.editor.x86_64.dll new file mode 100644 index 0000000..47bbb1d Binary files /dev/null and b/godot-git-plugin-v3.1.1/addons/godot-git-plugin/win64/~libgit_plugin.windows.editor.x86_64.dll differ diff --git a/scenes/test_level_2v2.tscn b/scenes/test_level_2v2.tscn index b5aeccb..461c529 100644 --- a/scenes/test_level_2v2.tscn +++ b/scenes/test_level_2v2.tscn @@ -405,8 +405,9 @@ _data = { [sub_resource type="BoxShape3D" id="BoxShape3D_82n8k"] size = Vector3(16.265, 5.07275, 15.3267) -[node name="Test Level 2" type="Node3D"] +[node name="Test Level 2" type="Node3D" node_paths=PackedStringArray("player")] script = ExtResource("1_orhgl") +player = NodePath("Player") gun_1 = ExtResource("2_q7f7y") gun_2 = ExtResource("3_k8htc") diff --git a/scripts/WeaponManager.gd b/scripts/WeaponManager.gd index 26ce937..8af6eea 100644 --- a/scripts/WeaponManager.gd +++ b/scripts/WeaponManager.gd @@ -1,12 +1,17 @@ extends Node3D +@export var player : Node @export var gun_1 : Resource @export var gun_2 : Resource +var held_guns = [gun_1,gun_2] # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. - + var instance_loop_times = held_guns.length() + while instance_loop_times > -1: + held_guns[instance_loop_times] + + instance_loop_times -= 1 # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): diff --git a/scripts/gun.gd b/scripts/gun.gd index 79867a8..f0a486a 100644 --- a/scripts/gun.gd +++ b/scripts/gun.gd @@ -60,16 +60,15 @@ func _process(delta): pass -func _on_gun_anims_animation_finished(anim_name): - if anim_name == "reload": - if player.ammo_reserve >= max_ammo: - player.ammo += max_ammo - player.ammo_reserve -= max_ammo - player.reloading = false - else: - player.ammo += player.ammo_reserve - player.ammo_reserve -= player.ammo_reserve - player.reloading = false +func reload_finished(): + if player.ammo_reserve >= max_ammo: + player.ammo += max_ammo + player.ammo_reserve -= max_ammo + player.reloading = false + else: + player.ammo += player.ammo_reserve + player.ammo_reserve -= player.ammo_reserve + player.reloading = false func shoot(player,delta): diff --git a/scripts/item_pickup.gd b/scripts/item_pickup.gd index ccf1938..198c2fd 100644 --- a/scripts/item_pickup.gd +++ b/scripts/item_pickup.gd @@ -12,7 +12,6 @@ var y_magnet var z_magnet @export var pickupType: String - # Called when the node enters the scene tree for the first time. func _ready(): rand_amt = rng.randf_range(10.0,100.0) diff --git a/scripts/player.gd b/scripts/player.gd index f27beea..8dfb2de 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -73,11 +73,16 @@ func _ready(): start_sensitivity = SENSITIVITY #Set up gun variables + var instance_gun = level_control.gun_1.instantiate() + instance_gun.global_transform.origin = weapon_spawner.position + gun = instance_gun def_weapon_holder_pos = weapon_holder.position ammo = gun.max_ammo ammo_reserve = gun.max_ammo * gun.start_mags bullet_damage = gun.bullet_damage gun_fire_pitch_starting = gun.audio_fire.pitch_scale + weapon_holder.add_child(instance_gun) + #turn off audio if unchecked in player if AUDIO == false: @@ -254,6 +259,7 @@ func _on_pick_up_detection_body_entered(body): func _on_pick_up_magnet_body_entered(body): if body.is_in_group("pickup"): + body.collision_shape.disabled = true var pickup_direction = self.global_position - body.global_position body.linear_velocity += pickup_direction * 5