48 lines
1.3 KiB
GDScript
48 lines
1.3 KiB
GDScript
extends Node3D
|
|
|
|
@export var CANNON_MIN_POWER = 7
|
|
@export var CANNON_MAX_POWER = 20
|
|
@export var TIMER_MIN = 0.0
|
|
@export var TIMER_MAX = 20.0
|
|
|
|
@onready var item_pickup = preload("res://assets/item_pickup.tscn")
|
|
@onready var timer = $Timer
|
|
@onready var cannonparticles = $cannonparticles
|
|
@onready var cannon_dir = $RayCast3D
|
|
@onready var fire_audio = $Audio/FireAudio
|
|
|
|
var fire = true
|
|
|
|
|
|
# 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 #self.rotation += Vector3(0,0,0) * delta
|
|
|
|
func _on_timer_timeout():
|
|
# Random Variables
|
|
var lv_y = randf_range(CANNON_MIN_POWER,CANNON_MAX_POWER)
|
|
var rand_timer = randf_range(TIMER_MIN,TIMER_MAX)
|
|
|
|
# Reset Timer
|
|
timer.wait_time = rand_timer #rand_timer
|
|
|
|
# Shoot that shit
|
|
var pickup_spawn = item_pickup.instantiate()
|
|
##SET VARIABLES
|
|
var type = randi_range(0,3)
|
|
pickup_spawn.pickup_type = type
|
|
if type == 0:
|
|
pickup_spawn.ammo_type = randi_range(0,4)
|
|
pickup_spawn.value = randi_range(1,10)
|
|
|
|
pickup_spawn.position = cannon_dir.global_position
|
|
pickup_spawn.transform.basis = cannon_dir.global_transform.basis
|
|
pickup_spawn.linear_velocity += cannon_dir.global_transform.basis * Vector3(0,lv_y,0)
|
|
fire_audio.play()
|
|
get_parent().add_child(pickup_spawn)
|