diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/player.gd | 20 |
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: |