added working vending machine

This commit is contained in:
derek
2024-07-17 17:05:46 -05:00
parent 9a15224df9
commit 4511023fcc
12 changed files with 240 additions and 37 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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)

11
scripts/3DLabel.gd Normal file
View File

@@ -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

12
scripts/Label3D.gd Normal file
View File

@@ -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

View File

@@ -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"

37
scripts/vendingmahcine.gd Normal file
View File

@@ -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)

View File

@@ -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 = "<null>"
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)