From f74d599b647fba65057a6882f5b8e63177a2552e Mon Sep 17 00:00:00 2001 From: derek Date: Fri, 17 Jan 2025 16:04:03 -0600 Subject: [PATCH] pretty happy with ladder movement right now --- assets/blockout_2.tscn | 39 ++----------------- assets/item_pickup.tscn | 1 + assets/ladder.tscn | 3 ++ assets/ladder_collision_check.tscn | 7 +++- post_processing.tscn | 30 +++++++++++++++ project.godot | 2 +- scenes/blockout_4.tscn | 33 +++++++++++++--- scripts/LevelManager.gd | 7 +++- scripts/gun.gd | 2 - scripts/item_pickup_v2.gd | 61 ++++++++++++++++-------------- scripts/ladder.gd | 6 +-- 11 files changed, 111 insertions(+), 80 deletions(-) create mode 100644 post_processing.tscn diff --git a/assets/blockout_2.tscn b/assets/blockout_2.tscn index b36d122..131bf7f 100644 --- a/assets/blockout_2.tscn +++ b/assets/blockout_2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=116 format=4 uid="uid://6agmt1hqlhww"] +[gd_scene load_steps=112 format=4 uid="uid://6agmt1hqlhww"] [ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_sbpvn"] [ext_resource type="PackedScene" uid="uid://brl0bsqjl5dg3" path="res://assets/mac_10.tscn" id="2_fn4vb"] @@ -25,7 +25,6 @@ [ext_resource type="Script" path="res://scripts/room_manager.gd" id="13_84vop"] [ext_resource type="PackedScene" uid="uid://bessq6hl7qsh8" path="res://assets/stats.tscn" id="13_gu6tc"] [ext_resource type="PackedScene" uid="uid://cgo4qyul7ix5p" path="res://assets/ladder.tscn" id="13_qu8oi"] -[ext_resource type="PackedScene" uid="uid://cdpxctwwi12j" path="res://assets/ladder_collision_check.tscn" id="14_gijx0"] [ext_resource type="PackedScene" uid="uid://b3t8fra7evqfb" path="res://assets/Models/building_1.tscn" id="15_ds1t8"] [ext_resource type="PackedScene" uid="uid://cp7tsicuudd6v" path="res://assets/boxcar_1.tscn" id="16_65evy"] [ext_resource type="Script" path="res://scripts/room_check.gd" id="16_ba8wj"] @@ -44,7 +43,7 @@ [ext_resource type="PackedScene" uid="uid://bcmd7elfjhppe" path="res://assets/tree_1.tscn" id="43_o23bq"] [ext_resource type="PackedScene" uid="uid://df34olntmk0wl" path="res://assets/vent_1.tscn" id="44_b0rr7"] [ext_resource type="PackedScene" uid="uid://dlhjacsike5a4" path="res://assets/oildrum1.tscn" id="45_eatji"] -[ext_resource type="Shader" path="res://assets/Shaders/outline.gdshader" id="46_avsk5"] +[ext_resource type="PackedScene" uid="uid://bj1y0fbjtul4a" path="res://post_processing.tscn" id="45_lveut"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_eiud5"] sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) @@ -896,29 +895,6 @@ _data = { "RESET": SubResource("Animation_3oaw1") } -[sub_resource type="ShaderMaterial" id="ShaderMaterial_axa5q"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_loib4"] -render_priority = 0 -next_pass = SubResource("ShaderMaterial_axa5q") -shader = ExtResource("46_avsk5") -shader_parameter/outlineColor = Color(0, 0, 0, 1) -shader_parameter/depth_threshold = 0.025 -shader_parameter/normal_threshold = 0.5 -shader_parameter/normal_smoothing = 0.25 -shader_parameter/max_thickness = 1.3 -shader_parameter/min_thickness = 0.5 -shader_parameter/max_distance = 75.0 -shader_parameter/min_distance = 2.0 -shader_parameter/grazing_fresnel_power = 5.0 -shader_parameter/grazing_angle_mask_power = 1.0 -shader_parameter/grazing_angle_modulation_factor = 50.0 - -[sub_resource type="QuadMesh" id="QuadMesh_ootk3"] -material = SubResource("ShaderMaterial_loib4") -flip_faces = true -size = Vector2(2, 2) - [node name="BLOCKOUT2Test" type="Node3D" node_paths=PackedStringArray("player")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.016016, 0.0225029, -0.0192337) script = ExtResource("1_sbpvn") @@ -1267,9 +1243,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.8461, -7.8707, 15.6061) [node name="Ladder2" parent="." instance=ExtResource("13_qu8oi")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.8461, -3.91327, 15.6061) -[node name="LadderCollisionCheck" parent="." instance=ExtResource("14_gijx0")] -transform = Transform3D(1, 0, 0, 0, 0.683592, 0, 0, 0, 1, 3.80189, -5.50271, 16.0033) - [node name="Building1" parent="." instance=ExtResource("15_ds1t8")] transform = Transform3D(-6.11959e-08, 0, 1.4, 0, 1.4, 0, -1.4, 0, -6.11959e-08, 21.5803, -472.358, 97.8783) @@ -1291,9 +1264,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.100218, 24.4327, 46.4567) [node name="Ladder6" parent="." instance=ExtResource("13_qu8oi")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.100218, 28.3013, 46.4567) -[node name="LadderCollisionCheck2" parent="." instance=ExtResource("14_gijx0")] -transform = Transform3D(1, 0, 0, 0, 1.88048, 0, 0, 0, 0.180683, -0.0459655, 17.4816, 46.5358) - [node name="pistol1_pickup" parent="." instance=ExtResource("17_buv6l")] transform = Transform3D(0.558498, -0.829506, 0, 0.829506, 0.558498, 0, 0, 0, 1, 35.2023, 17.3708, 122.41) @@ -2064,10 +2034,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.46674, 27.457, -7.49986) [node name="Oildrum2" parent="." instance=ExtResource("45_eatji")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.84071, 27.457, 3.20335) -[node name="PostProcessing" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.271851, 1.43588, -9.80906) -extra_cull_margin = 16384.0 -mesh = SubResource("QuadMesh_ootk3") +[node name="PostProcessing" parent="." instance=ExtResource("45_lveut")] [connection signal="body_entered" from="Room1/RoomCheck" to="Room1/RoomCheck" method="_on_body_entered"] [connection signal="body_exited" from="Room1/RoomCheck" to="Room1/RoomCheck" method="_on_body_exited"] diff --git a/assets/item_pickup.tscn b/assets/item_pickup.tscn index cedddd4..a3cae48 100644 --- a/assets/item_pickup.tscn +++ b/assets/item_pickup.tscn @@ -580,6 +580,7 @@ attenuation_model = 1 autoplay = true [node name="Magnet_Timer" type="Timer" parent="."] +wait_time = 0.5 one_shot = true autostart = true diff --git a/assets/ladder.tscn b/assets/ladder.tscn index e5ad0ec..db4df14 100644 --- a/assets/ladder.tscn +++ b/assets/ladder.tscn @@ -59,3 +59,6 @@ skeleton = NodePath("") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] transform = Transform3D(3.57628e-07, 1, 7.54979e-08, 1, -3.57628e-07, -7.54979e-08, -7.54979e-08, 7.54979e-08, -1, 0, 0, 0) shape = SubResource("ConvexPolygonShape3D_wmqg7") + +[node name="ladder_top" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.677, 0) diff --git a/assets/ladder_collision_check.tscn b/assets/ladder_collision_check.tscn index 2e2dc78..3eaaaf7 100644 --- a/assets/ladder_collision_check.tscn +++ b/assets/ladder_collision_check.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://scripts/ladder.gd" id="1_ugi45"] [sub_resource type="BoxShape3D" id="BoxShape3D_gxu3i"] -size = Vector3(1, 8.23889, 1.6582) +size = Vector3(1, 10, 1) [node name="LadderCollisionCheck" type="Area3D"] collision_layer = 2 @@ -11,8 +11,11 @@ collision_mask = 2 script = ExtResource("1_ugi45") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.67353, 0.329102) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0.329) shape = SubResource("BoxShape3D_gxu3i") +[node name="CollisionMidpoint" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0) + [connection signal="body_entered" from="." to="." method="_on_body_entered"] [connection signal="body_exited" from="." to="." method="_on_body_exited"] diff --git a/post_processing.tscn b/post_processing.tscn new file mode 100644 index 0000000..8b67b83 --- /dev/null +++ b/post_processing.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=5 format=3 uid="uid://bj1y0fbjtul4a"] + +[ext_resource type="Shader" path="res://assets/Shaders/outline.gdshader" id="1_ri2g1"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_axa5q"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_loib4"] +render_priority = 0 +next_pass = SubResource("ShaderMaterial_axa5q") +shader = ExtResource("1_ri2g1") +shader_parameter/outlineColor = Color(0, 0, 0, 1) +shader_parameter/depth_threshold = 0.025 +shader_parameter/normal_threshold = 0.5 +shader_parameter/normal_smoothing = 0.25 +shader_parameter/max_thickness = 1.5 +shader_parameter/min_thickness = 0.75 +shader_parameter/max_distance = 75.0 +shader_parameter/min_distance = 2.0 +shader_parameter/grazing_fresnel_power = 5.0 +shader_parameter/grazing_angle_mask_power = 1.0 +shader_parameter/grazing_angle_modulation_factor = 50.0 + +[sub_resource type="QuadMesh" id="QuadMesh_ootk3"] +material = SubResource("ShaderMaterial_loib4") +flip_faces = true +size = Vector2(2, 2) + +[node name="PostProcessing" type="MeshInstance3D"] +extra_cull_margin = 16384.0 +mesh = SubResource("QuadMesh_ootk3") diff --git a/project.godot b/project.godot index f2a6421..2b5abff 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="First Person Test" -run/main_scene="res://assets/blockout_2.tscn" +run/main_scene="res://scenes/blockout_4.tscn" config/features=PackedStringArray("4.3", "Forward Plus") config/icon="res://icon.svg" diff --git a/scenes/blockout_4.tscn b/scenes/blockout_4.tscn index 3b0101a..adc2204 100644 --- a/scenes/blockout_4.tscn +++ b/scenes/blockout_4.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=26 format=3 uid="uid://breenfpt04iua"] +[gd_scene load_steps=27 format=3 uid="uid://breenfpt04iua"] [ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_8g3mj"] [ext_resource type="PackedScene" uid="uid://xerc06hjfnbf" path="res://assets/LevelBlockouts/blockout4.blend" id="1_038d8"] [ext_resource type="PackedScene" uid="uid://drwae3loscbw7" path="res://assets/player.tscn" id="4_ykmsc"] [ext_resource type="PackedScene" uid="uid://df34olntmk0wl" path="res://assets/vent_1.tscn" id="5_hc1cs"] -[ext_resource type="PackedScene" uid="uid://20csd6dmwj4y" path="res://assets/jump_platform.tscn" id="6_p3qak"] [ext_resource type="PackedScene" uid="uid://bycbdb5u5ewgl" path="res://assets/tree_2.tscn" id="7_t1egx"] [ext_resource type="PackedScene" uid="uid://do6gt53xr2l23" path="res://assets/garbage_bin.tscn" id="8_xilbw"] [ext_resource type="PackedScene" uid="uid://brpsfqr85xi35" path="res://assets/file_cabinet.tscn" id="9_hveq1"] @@ -21,6 +20,8 @@ [ext_resource type="PackedScene" uid="uid://dws4iro7820fc" path="res://assets/pistol1_pickup.tscn" id="19_1o424"] [ext_resource type="PackedScene" uid="uid://clu76sc4uoswn" path="res://assets/rocketlauncher_pickup.tscn" id="20_4cdch"] [ext_resource type="PackedScene" uid="uid://dws2vwfxubqvb" path="res://assets/cannon.tscn" id="21_24v0y"] +[ext_resource type="PackedScene" uid="uid://cdpxctwwi12j" path="res://assets/ladder_collision_check.tscn" id="22_lsb7i"] +[ext_resource type="PackedScene" uid="uid://cgo4qyul7ix5p" path="res://assets/ladder.tscn" id="22_tt78r"] [sub_resource type="Environment" id="Environment_q4t3f"] ssr_enabled = true @@ -71,10 +72,6 @@ transform = Transform3D(1, 0.000164476, 0.000583754, -0.000165075, 0.999999, 0.0 [node name="Vent1" parent="." instance=ExtResource("5_hc1cs")] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0.71, 5.67755) -[node name="JumpPlatform" parent="." instance=ExtResource("6_p3qak")] -transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 34.3221, 6.80971, 12.7129) -jump_amount = 30 - [node name="Tree2" parent="." instance=ExtResource("7_t1egx")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.25018, -0.176033, -39.0611) @@ -680,3 +677,27 @@ transform = Transform3D(0.978792, -0.185004, 0.0879728, 0, 0.42944, 0.903096, -0 CANNON_MIN_POWER = 20 CANNON_MAX_POWER = 50 TIMER_MAX = 10.0 + +[node name="Ladder" parent="." instance=ExtResource("22_tt78r")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.108, 9.05991e-06, -18.8845) + +[node name="Ladder2" parent="." instance=ExtResource("22_tt78r")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34.3988, 5.79711, 11.9526) + +[node name="Ladder3" parent="." instance=ExtResource("22_tt78r")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34.3988, 9.74877, 11.9526) + +[node name="Ladder4" parent="." instance=ExtResource("22_tt78r")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34.3988, 13.7116, 11.9526) + +[node name="Ladder5" parent="." instance=ExtResource("22_tt78r")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34.3988, 17.6943, 11.9526) + +[node name="Ladder6" parent="." instance=ExtResource("22_tt78r")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34.3988, 21.6723, 11.9526) + +[node name="Ladder7" parent="." instance=ExtResource("22_tt78r")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34.3988, 25.6446, 11.9526) + +[node name="LadderCollisionCheck" parent="." instance=ExtResource("22_lsb7i")] +transform = Transform3D(1, 0, 0, 0, 2.24237, 0, 0, 0, 1, 34.3971, 6.89573, 12.1428) diff --git a/scripts/LevelManager.gd b/scripts/LevelManager.gd index e265868..56e7153 100644 --- a/scripts/LevelManager.gd +++ b/scripts/LevelManager.gd @@ -210,14 +210,17 @@ func pickup_spawn(randomized): 4: i_weight = 1.0 - clamp(float(player.ammo_reserve[str(i)]) / float(expected_ammo["rocket"]),0,1) if i_weight > ammo_weight: - ammo_weight = i_weight + drop_chance_minimum + ammo_weight = i_weight ammo_type_weight[i] = i_weight + drop_chance_minimum pickup_type = HelperFuncs.weighted_random({"0" : ammo_weight, "1" : stamina_weight,"2" : health_weight,"3" : money_weight}) match pickup_type: "0": - ammo_type = int(HelperFuncs.weighted_random(ammo_type_weight)) + if ammo_type_weight.size() > 0: + ammo_type = int(HelperFuncs.weighted_random(ammo_type_weight)) + else: + ammo_type = randi_range(0,4) value = randi_range(1,20) "1": value = randi_range(int(player.MAX_STAMINA * .25),player.MAX_STAMINA) diff --git a/scripts/gun.gd b/scripts/gun.gd index 4007251..0cc51d7 100644 --- a/scripts/gun.gd +++ b/scripts/gun.gd @@ -83,8 +83,6 @@ func reload_finished(): player.ammo_reserve[str(ammo_type)] -= player.ammo_reserve[str(ammo_type)] func shoot(delta): - print("GUN AMMO: ",player.gun_ammo) - print("RESERVE AMMO: ",player.ammo_reserve) if player.gun_ammo[gun_name] > 0 and cycle_count > 0: if !anim_player.is_playing(): player.gun_ammo[gun_name] -= 1 diff --git a/scripts/item_pickup_v2.gd b/scripts/item_pickup_v2.gd index aa219ef..ebaf2d8 100644 --- a/scripts/item_pickup_v2.gd +++ b/scripts/item_pickup_v2.gd @@ -3,6 +3,7 @@ extends RigidBody3D var despawning = false var despawn_time_s = 10 +var mesh_activated = false var value @export_enum("Ammo", "Stamina", "Health", "Money","Weapon") var pickup_type: int var ammo_type @@ -23,7 +24,7 @@ var ammo_type @onready var money: Node3D = $Meshes/money -var magnetable = true #false +var magnetable = false var pickupable = false var pick_up = false var rand_amt @@ -32,41 +33,21 @@ var player # Called when the node enters the scene tree for the first time. func _ready(): - add_to_group("spawned") - add_to_group("persist") - - #Enable mesh - match pickup_type: - 0: - match ammo_type: - 0: - light_ammo.visible = true - 1: - medium_ammo.visible = true #medium - 2: - heavy_ammo.visible = true #heavy - 3: - shotgun_ammo.visible = true #shotgun - 4: - rocket.visible = true #rocket - 1: - stamina.visible = true - 2: - health.visible = true - 3: - money.visible = true - if despawning == true: timer.wait_time = despawn_time_s timer.start() func _physics_process(delta): + if !mesh_activated: + activate_mesh() + if player_follow != null: if !pick_up: - despawning = false - angular_velocity = lerp(angular_velocity, Vector3(0,0,0), delta) - position = lerp(position, player.item_holder.global_position, 25 * delta) + if magnetable: + despawning = false + angular_velocity = lerp(angular_velocity, Vector3(0,0,0), delta) + position = lerp(position, player.item_holder.global_position, 25 * delta) if abs(position - player.item_holder.global_position) < Vector3(.5,.5,.5): await get_tree().create_timer(1).timeout @@ -91,12 +72,36 @@ func save(): "rot_x" : rotation.x, "rot_y" : rotation.y, "rot_z" : rotation.z, + "linear_velocity" : linear_velocity, + "angular_velocity" : angular_velocity, "pickup_type" : pickup_type, "ammo_type" : ammo_type, "value" : value } return save_dict +func activate_mesh(): + match pickup_type: + 0: + match ammo_type: + 0: + light_ammo.visible = true + 1: + medium_ammo.visible = true #medium + 2: + heavy_ammo.visible = true #heavy + 3: + shotgun_ammo.visible = true #shotgun + 4: + rocket.visible = true #rocket + 1: + stamina.visible = true + 2: + health.visible = true + 3: + money.visible = true + + mesh_activated = true func _on_magnet_timer_timeout() -> void: magnetable = true diff --git a/scripts/ladder.gd b/scripts/ladder.gd index a168738..79412c9 100644 --- a/scripts/ladder.gd +++ b/scripts/ladder.gd @@ -1,5 +1,7 @@ extends Area3D +@onready var collision_midpoint: Node3D = $CollisionMidpoint + # Called when the node enters the scene tree for the first time. func _ready(): pass @@ -11,9 +13,8 @@ func _process(delta): func _on_body_entered(body): if body.is_in_group("player"): - body.velocity = Vector3(0,0,0) body.is_climbing = true - if body.global_position.y < global_position.y: + if body.global_position.y < collision_midpoint.global_position.y: body.global_position.y += .2 @@ -21,4 +22,3 @@ func _on_body_exited(body): if body.is_in_group("player"): body.is_climbing = false body.gravity = body.default_gravity - body.ladder_center = null