Started a Godot Project to remake Tailgunner.
This commit is contained in:
commit
9621323983
67 changed files with 976 additions and 0 deletions
41
scripts/weapon.gd
Normal file
41
scripts/weapon.gd
Normal file
|
@ -0,0 +1,41 @@
|
|||
class_name Weapon
|
||||
extends Node2D
|
||||
|
||||
# constants
|
||||
@export var max_ammo = 1
|
||||
## Number of seconds until the weapon can be used again.
|
||||
@export var cooldown = 1
|
||||
@export var shot: Projectile
|
||||
@export var shot_spawn: Node2D
|
||||
@export var audio: AudioStreamRandomizer
|
||||
|
||||
# gameplay variables
|
||||
var ammo
|
||||
var timer = 0.0
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
ammo = max_ammo
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
timer += delta
|
||||
|
||||
# Creates and returns an instance of the weapon's projectile.
|
||||
func shoot() -> Projectile:
|
||||
if timer > cooldown && ammo > 0:
|
||||
timer = 0
|
||||
var new_shot = shot.instantiate()
|
||||
owner.add_child(new_shot)
|
||||
new_shot.transform = shot_spawn.transform
|
||||
ammo -= 1
|
||||
audio.play()
|
||||
return new_shot
|
||||
else:
|
||||
return null
|
||||
|
||||
func add_ammo(amount):
|
||||
ammo += amount
|
||||
if ammo > max_ammo:
|
||||
ammo = max_ammo
|
Loading…
Add table
Add a link
Reference in a new issue