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

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)