diff --git a/assets/Models/vendingmahcine.blend b/assets/Models/vendingmahcine.blend index 3693ece..cff2597 100644 Binary files a/assets/Models/vendingmahcine.blend and b/assets/Models/vendingmahcine.blend differ diff --git a/assets/Models/vendingmahcine.blend1 b/assets/Models/vendingmahcine.blend1 index 00f8749..27338f6 100644 Binary files a/assets/Models/vendingmahcine.blend1 and b/assets/Models/vendingmahcine.blend1 differ diff --git a/assets/bullet.tscn b/assets/bullet.tscn index 38df8cb..9d60b67 100644 --- a/assets/bullet.tscn +++ b/assets/bullet.tscn @@ -87,7 +87,7 @@ skeleton = NodePath("") [node name="RayCast3D" type="RayCast3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.70846, 0.000340699, 0.0133128, 2.00575) target_position = Vector3(0, 0, -2.5) -collision_mask = 15 +collision_mask = 3 hit_from_inside = true collide_with_areas = true diff --git a/assets/player.tscn b/assets/player.tscn index 094bc31..2e71894 100644 --- a/assets/player.tscn +++ b/assets/player.tscn @@ -83,7 +83,7 @@ padding_amount = 0.025 [node name="GunRay" type="RayCast3D" parent="Head/Camera3D" groups=["gun_ray"]] transform = Transform3D(0.977933, 0, -0.208919, 0, 1, 7.45058e-09, 0.208919, 0, 0.977933, 0, -0.197421, -0.129669) -target_position = Vector3(0, 0, -1.5) +target_position = Vector3(0, 0, -1) [node name="AudioListener3D" type="AudioListener3D" parent="Head/Camera3D"] transform = Transform3D(1, 0, 0, 0, 0.992332, 0.123601, 0, -0.123601, 0.992332, 0, -0.921646, -0.000722691) @@ -107,6 +107,13 @@ target_position = Vector3(0, 0, -200) collision_mask = 7 collide_with_areas = true +[node name="InteractRay" type="RayCast3D" parent="Head/Camera3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0521634, -0.764677) +target_position = Vector3(0, 0, -3) +collision_mask = 8 +hit_from_inside = true +collide_with_areas = true + [node name="pick_up_detection" type="Area3D" parent="."] collision_layer = 0 collision_mask = 4 diff --git a/assets/revolver1_pickup.tscn b/assets/revolver1_pickup.tscn index fdee0f7..fdc48ed 100644 --- a/assets/revolver1_pickup.tscn +++ b/assets/revolver1_pickup.tscn @@ -734,7 +734,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_hungu") -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_3ftb4"] +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_1u468"] points = PackedVector3Array(0.930093, 0.100662, 0.798251, 0.930093, -0.0820646, 0.798251, -0.0290589, 0.100662, -1.94284, -0.166081, -0.127707, -1.94284, -0.303223, 0.146367, 0.204352, -0.211835, -0.173444, 0.204352, -0.303223, 0.0549884, -1.94284, 0.518907, 0.146367, 0.889554, 0.838705, -0.127707, 0.981144, 0.244984, -0.127707, 0.798251, -0.303223, -0.127707, 0.204352, 0.884338, -0.127707, 0.615073, 0.884338, 0.146367, 0.661154, -0.0290589, -0.0820646, -1.94284, 0.153596, -0.173444, 0.113049, 0.290618, 0.146367, -0.435342, 0.884338, 0.100662, 0.569851, -0.303223, -0.0363594, -1.94284, -0.211835, 0.100662, -1.94284, 0.290618, 0.146367, 0.798251, -0.303223, -0.127707, -0.389547, -0.120447, -0.127707, -1.94284, 0.884338, -0.0820646, 0.569851, 0.564661, -0.127707, 0.935349, 0.838705, 0.146367, 0.844046, 0.153596, 0.146367, -0.435342, -0.0290589, -0.127707, 0.524056, -0.257469, -0.0820646, -1.94284, 0.701683, 0.146367, 0.889554, 0.107963, -0.173444, 0.250147, -0.211835, -0.173444, 0.113049, 0.427519, -0.127707, 0.889554) [sub_resource type="SphereShape3D" id="SphereShape3D_87tum"] @@ -746,10 +746,10 @@ collision_mask = 6 script = ExtResource("1_8fbqg") gun_resource = ExtResource("2_qbywk") pickupType = "weapon" -collision_shape = NodePath("CollisionShape3D") +collision_shape = NodePath("") [node name="revolver1" type="MeshInstance3D" parent="."] -transform = Transform3D(-2.17199e-06, 0.600001, 0, -0.6, -2.172e-06, 0, 0, 0, 0.6, 0, 0, -0.073) +transform = Transform3D(-1.086e-06, 0.3, 0, -0.3, -1.086e-06, 0, 0, 0, 0.3, 0, 0, -0.073) mesh = SubResource("ArrayMesh_28d6l") skeleton = NodePath("") @@ -874,9 +874,9 @@ spot_range = 7.0 spot_angle = 70.0 spot_angle_attenuation = 0.353554 -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(-2.17199e-06, 0.600001, 0, -0.6, -2.172e-06, 0, 0, 0, 0.6, 0, 0, -0.073) -shape = SubResource("ConvexPolygonShape3D_3ftb4") +[node name="CollisionShape3D2" type="CollisionShape3D" parent="."] +transform = Transform3D(-1.086e-06, 0.3, 0, -0.3, -1.086e-06, 0, 0, 0, 0.3, 0, 0, -0.073) +shape = SubResource("ConvexPolygonShape3D_1u468") [node name="Area3D" type="Area3D" parent="."] collision_layer = 4 diff --git a/project.godot b/project.godot index 6c83b28..6b875fe 100644 --- a/project.godot +++ b/project.godot @@ -101,6 +101,11 @@ escape={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"echo":false,"script":null) ] } +interact={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null) +] +} [rendering] diff --git a/scenes/test_level_2v2.tscn b/scenes/test_level_2v2.tscn index eb0eb35..96ae69a 100644 --- a/scenes/test_level_2v2.tscn +++ b/scenes/test_level_2v2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=55 format=3 uid="uid://dyop6vk3rgkkb"] +[gd_scene load_steps=53 format=3 uid="uid://dyop6vk3rgkkb"] [ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_orhgl"] [ext_resource type="Texture2D" uid="uid://dqs06ic3vjtwk" path="res://assets/Models/asphalt1.albedo.jpg" id="1_w4rag"] @@ -12,8 +12,6 @@ [ext_resource type="AudioStream" uid="uid://jo4n05go5hdt" path="res://assets/Audio/train-pass-by-steady-loop-SBA-300156766.wav" id="7_00j8j"] [ext_resource type="PackedScene" uid="uid://cnfc8rtk6l1d8" path="res://assets/crate1.tscn" id="8_b57j8"] [ext_resource type="PackedScene" uid="uid://djr7vnr1hcx82" path="res://assets/spiderTEst.tscn" id="12_gnu56"] -[ext_resource type="PackedScene" uid="uid://dws4iro7820fc" path="res://assets/pistol1_pickup.tscn" id="13_ne668"] -[ext_resource type="PackedScene" uid="uid://dugcxo2665me0" path="res://assets/revolver1_pickup.tscn" id="14_m55rd"] [ext_resource type="PackedScene" uid="uid://c7vrpfdh603kr" path="res://assets/bottle_1.tscn" id="15_3iv0j"] [ext_resource type="PackedScene" uid="uid://c6bpysq1tjhy4" path="res://vendingmahcine.tscn" id="16_4ykdi"] @@ -647,12 +645,6 @@ mass = 10.0 [node name="spider14" parent="." instance=ExtResource("12_gnu56")] transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -3.267, -0.228641, 15.75) -[node name="pistol1_pickup" parent="." instance=ExtResource("13_ne668")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.7227, 43.775, -30.187) - -[node name="pistol1_pickup2" parent="." instance=ExtResource("14_m55rd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 44, 28) - [node name="bottle1" parent="." instance=ExtResource("15_3iv0j")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.88146, 0.608878, 12.1473) diff --git a/scripts/3DLabel.gd b/scripts/3DLabel.gd new file mode 100644 index 0000000..92ea02c --- /dev/null +++ b/scripts/3DLabel.gd @@ -0,0 +1,11 @@ +extends SubViewport + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/scripts/Label3D.gd b/scripts/Label3D.gd new file mode 100644 index 0000000..fb34d9d --- /dev/null +++ b/scripts/Label3D.gd @@ -0,0 +1,12 @@ +extends Label3D + +@onready var vendingmachine = $".." + +# Called when the node enters the scene tree for the first time. +func _ready(): + text = "$" + str(vendingmachine.item_price) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/scripts/player.gd b/scripts/player.gd index 08a3e46..3ef4dc8 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -33,7 +33,7 @@ var start_sensitivity @onready var gun_ray = $Head/Camera3D/GunRay @onready var level_control = $".." - +@onready var interact_ray = $Head/Camera3D/InteractRay @onready var bullet_ray = $Head/Camera3D/BulletRay var instance_bullet var instance_casing @@ -67,6 +67,7 @@ var pickupmsg @onready var pickup_sound = $Audio/PickupSound @onready var ear_wind = $Audio/EarWind @onready var weapon_spawner = $Head/Camera3D/WeaponHolder/WeaponSpawner +@onready var pick_up_detection = $pick_up_detection func _ready(): @@ -114,11 +115,11 @@ func _physics_process(delta): velocity.x = direction.x * speed velocity.z = direction.z * speed else: - velocity.x = lerp(velocity.x, direction.x * speed, delta * 3.0) - velocity.z = lerp(velocity.z, direction.z * speed, delta * 3.0) + velocity.x = lerp(velocity.x, direction.x * speed, delta * 6.5) + velocity.z = lerp(velocity.z, direction.z * speed, delta * 6.5) else: - velocity.x = lerp(velocity.x, direction.x * speed, delta * 3.0) - velocity.z = lerp(velocity.z, direction.z * speed, delta * 3.0) + velocity.x = lerp(velocity.x, direction.x * speed, delta * 6.5) + velocity.z = lerp(velocity.z, direction.z * speed, delta * 6.5) # Head bob t_bob += delta * velocity.length() * float(is_on_floor()) @@ -188,8 +189,16 @@ func _physics_process(delta): gun.anim_player.play("swap_out") level_control.gun_spawn(level_control.current_gun_index - 1) + + #interact button + if Input.is_action_just_pressed("interact"): + if interact_ray.is_colliding(): # and !interact_ray.get_collider().is_in_group("interact"): + var body = interact_ray.get_collider() + body.get_parent().interact() + + #quit game and eventually go to menu - if Input.is_action_pressed("escape"): + if Input.is_action_just_pressed("escape"): get_tree().quit() move_and_slide() @@ -205,6 +214,7 @@ func _headbob(time) -> Vector3: func _on_pick_up_detection_body_entered(body): + if body.pickupType == "stamina": pickupmsg = pickup_announce.instantiate() pickupmsg.pickuptext = "stamina" diff --git a/scripts/vendingmahcine.gd b/scripts/vendingmahcine.gd new file mode 100644 index 0000000..17030fc --- /dev/null +++ b/scripts/vendingmahcine.gd @@ -0,0 +1,37 @@ +extends Node3D + +@export var item : Resource +@export var item_name : String +@export var item_price : int +@onready var anim_player = $AnimationPlayer +@onready var vend_ray = $VendRay +@onready var label_3d = $Label3D + +var active = true +var level_control + +# Called when the node enters the scene tree for the first time. +func _ready(): + level_control = self.get_node("../") + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass + +func interact(): + if active == true: + if level_control.money >= item_price: + level_control.money -= item_price + anim_player.play("vend") + #label_3d.text = str(lerp(item_price,0,delta)) + else: + pass #add "too poor" text here + +func vend(): + var item_vend = item.instantiate() + item_vend.position = vend_ray.global_position + item_vend.transform.basis = vend_ray.global_transform.basis + item_vend.linear_velocity += vend_ray.global_transform.basis * Vector3(0,0,10) + active = false + get_parent().add_child(item_vend) diff --git a/vendingmahcine.tscn b/vendingmahcine.tscn index c60506e..daf009a 100644 --- a/vendingmahcine.tscn +++ b/vendingmahcine.tscn @@ -1,14 +1,20 @@ -[gd_scene load_steps=8 format=3 uid="uid://c6bpysq1tjhy4"] +[gd_scene load_steps=14 format=3 uid="uid://c6bpysq1tjhy4"] [ext_resource type="PackedScene" uid="uid://ssmvvwg1hh1k" path="res://assets/Models/vendingmahcine.blend" id="1_8fhd0"] +[ext_resource type="PackedScene" uid="uid://dgogd08c0ubt6" path="res://assets/Models/revolver1.blend" id="2_goj2p"] +[ext_resource type="Script" path="res://scripts/vendingmahcine.gd" id="2_jtasa"] [ext_resource type="PackedScene" uid="uid://dugcxo2665me0" path="res://assets/revolver1_pickup.tscn" id="2_qn8st"] +[ext_resource type="FontFile" uid="uid://bckxhcc1eudvn" path="res://assets/fonts/Plane Crash.ttf" id="3_1f40n"] +[ext_resource type="Script" path="res://scripts/Label3D.gd" id="4_lcs0l"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0lax2"] resource_name = "Glass" transparency = 1 cull_mode = 2 -albedo_color = Color(1, 1, 1, 0.203922) +albedo_color = Color(0.537255, 1, 1, 0.105882) metallic = 1.0 +clearcoat_enabled = true +clearcoat_roughness = 0.15 [sub_resource type="ArrayMesh" id="ArrayMesh_wlcaf"] _surfaces = [{ @@ -44,26 +50,149 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_wlcaf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dchcc"] -transparency = 1 -blend_mode = 1 -clearcoat_enabled = true -clearcoat_roughness = 0.1 - [sub_resource type="BoxShape3D" id="BoxShape3D_k5yem"] size = Vector3(1.62036, 2.86546, 1.2467) -[node name="vendingmahcine" instance=ExtResource("1_8fhd0")] +[sub_resource type="BoxShape3D" id="BoxShape3D_te7mh"] +size = Vector3(1.84326, 2.88617, 2.0271) + +[sub_resource type="Animation" id="Animation_60f6j"] +resource_name = "vend" +length = 4.0 +step = 0.01 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("vendingmachine_coil:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.2, 2.3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 0, 9.42478)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("revolver14:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.2, 2.3, 2.8), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(-0.0237292, 1.94229, 0.717401), Vector3(-0.0161762, 1.94229, 0.955517), Vector3(-0.0161762, 0.355468, 0.955517)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("revolver14:rotation") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.436088, 1.46553, 3.09699)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Cube_001:rotation") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(3, 3.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(-1.5708, 0, 0), Vector3(-3.65297, 0, 0)] +} +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(3.11), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"vend" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_j0hsb"] +_data = { +"vend": SubResource("Animation_60f6j") +} + +[node name="vendingmachine" instance=ExtResource("1_8fhd0")] +script = ExtResource("2_jtasa") +item = ExtResource("2_qn8st") +item_name = "Revolver" +item_price = 250 + +[node name="Cube_001" parent="." index="1"] +transform = Transform3D(1, 0, 0, 0, -0.930849, 0.365404, 0, -0.365404, -0.930849, -0.0321195, 0.920841, 1.17642) [node name="Glass" parent="." index="2"] mesh = SubResource("ArrayMesh_66b6k") -surface_material_override/0 = SubResource("StandardMaterial3D_dchcc") -[node name="pistol1_pickup" parent="." index="4" instance=ExtResource("2_qn8st")] -transform = Transform3D(0.0648305, 0, -0.495779, 0, 0.5, 0, 0.495779, 0, 0.0648305, -0.175775, 1.9618, 0.667686) - -[node name="StaticBody3D" type="StaticBody3D" parent="." index="5"] +[node name="StaticBody3D" type="StaticBody3D" parent="." index="4"] [node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" index="0"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.116262, 1.40336, 0.595886) shape = SubResource("BoxShape3D_k5yem") + +[node name="revolver12" parent="." index="5" instance=ExtResource("2_goj2p")] +transform = Transform3D(-0.0215597, -0.106081, 0.225348, 0.010103, -0.226377, -0.105599, 0.248864, 4.49794e-10, 0.0238094, -0.0237292, 2.55643, 0.717401) + +[node name="revolver13" parent="." index="6" instance=ExtResource("2_goj2p")] +transform = Transform3D(-0.0215597, -0.106081, 0.225348, 0.010103, -0.226377, -0.105599, 0.248864, 4.49794e-10, 0.0238094, 0.164161, 2.55643, 0.471795) + +[node name="revolver14" parent="." index="7" instance=ExtResource("2_goj2p")] +transform = Transform3D(-0.0215597, -0.106081, 0.225348, 0.010103, -0.226377, -0.105599, 0.248864, -9.31322e-09, 0.0238094, -0.0161762, 0.355468, 0.955517) + +[node name="revolver15" parent="." index="8" instance=ExtResource("2_goj2p")] +transform = Transform3D(0.0215597, 0.106081, -0.225348, -0.010103, 0.226377, 0.105599, 0.248864, 2.08348e-09, 0.0238094, -0.135839, 1.79441, 0.471795) + +[node name="revolver16" parent="." index="9" instance=ExtResource("2_goj2p")] +transform = Transform3D(-0.0215597, -0.106081, 0.225348, 0.010103, -0.226377, -0.105599, 0.248864, 4.49794e-10, 0.0238094, 0.186099, 1.28584, 0.717401) + +[node name="revolver17" parent="." index="10" instance=ExtResource("2_goj2p")] +transform = Transform3D(-0.0975382, 0.170447, -0.154707, -0.028175, -0.175599, -0.175701, -0.228457, -0.0511149, 0.0877199, -0.0806501, 1.28584, 0.471795) + +[node name="SpotLight3D" type="SpotLight3D" parent="." index="11"] +transform = Transform3D(1, 0, 0, 0, 0.63628, 0.771458, 0, -0.771458, 0.63628, -0.00552031, 2.68433, 1.07754) +shadow_enabled = true + +[node name="Label3D" type="Label3D" parent="." index="12"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.684768, 2.06592, 1.22063) +modulate = Color(0.642333, 0.82, 0, 1) +outline_modulate = Color(0, 0, 0, 0) +text = "" +font = ExtResource("3_1f40n") +outline_size = 0 +script = ExtResource("4_lcs0l") + +[node name="InteractArea" type="Area3D" parent="." index="13" groups=["interact"]] +collision_layer = 8 +collision_mask = 8 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractArea" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.182373, 1.45037, 0.997813) +shape = SubResource("BoxShape3D_te7mh") + +[node name="vendingmachine_coil" parent="." index="14"] +transform = Transform3D(-1, 2.38498e-08, 0, -2.38498e-08, -1, 0, 0, 0, 1, -0.0259684, 1.80304, 0.628036) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="15"] +libraries = { +"": SubResource("AnimationLibrary_j0hsb") +} + +[node name="VendRay" type="RayCast3D" parent="." index="16"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.782712, 1.03206) +target_position = Vector3(0, 0, 0.5)