Now About Social Code
summaryrefslogtreecommitdiff
path: root/scripts/player.gd
diff options
context:
space:
mode:
authorLucas Fryzek <lucas.fryzek@fryzekconcepts.com>2024-09-29 12:34:52 +0100
committerLucas Fryzek <lucas.fryzek@fryzekconcepts.com>2024-09-29 12:34:52 +0100
commit688a0418fd24c9ffff7dca43dd027ccb3784a373 (patch)
tree1943ed9df9bdbfca52339374750caca6cec4c8b8 /scripts/player.gd
parent5e62cca19ee202353d9ad17c9ee0cfe96671864b (diff)
player: Add ammo and fire rate
Diffstat (limited to 'scripts/player.gd')
-rw-r--r--scripts/player.gd20
1 files changed, 16 insertions, 4 deletions
diff --git a/scripts/player.gd b/scripts/player.gd
index f476bf0..275100a 100644
--- a/scripts/player.gd
+++ b/scripts/player.gd
@@ -4,6 +4,8 @@ extends Node3D
@export var grapple_speed: float = 10
@export var fire_distance: float = 100
+@export var fire_rate: float = 0.1
+
enum State {
NO_GRAPPLE,
FREE,
@@ -15,6 +17,9 @@ var grapple_target: Vector3 = Vector3.ZERO
var bullet_inst = preload("res://prefabs/bullet.tscn")
+var ammo: int = 100
+var fire_timer: float = fire_rate
+
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
@@ -44,8 +49,8 @@ func do_grapple() -> void:
get_parent().local_velocity = dir_to_target * grapple_speed
-func fire_weapon() -> void:
- if Input.is_action_just_pressed("attack"):
+func fire_weapon(delta: float) -> void:
+ if Input.is_action_pressed("attack") and ammo > 0 and fire_timer >= fire_rate:
var space_state = get_world_3d().direct_space_state
var starting_pos = global_position
var ending_pos = starting_pos + fire_distance * -global_transform.basis.z
@@ -69,10 +74,17 @@ func fire_weapon() -> void:
if abs(global_transform.basis.z.y) > 0.99:
up = Vector3(0, 0, 1)
bullet.look_at(end, up)
+
+ ammo -= 1
+ print("Ammo: ", ammo)
+ fire_timer = 0
+ else:
+ fire_timer += delta
+
-func _physics_process(_delta: float) -> void:
+func _physics_process(delta: float) -> void:
do_grapple()
- fire_weapon()
+ fire_weapon(delta)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void: