From 23add4aba3ecc1da1300a81de8c78ff5689a67d3 Mon Sep 17 00:00:00 2001 From: DeathByDenim Date: Mon, 22 May 2023 14:04:16 -0400 Subject: [PATCH] Implement fire repeat rate --- World/PlayerShip.gd | 9 ++++++++- World/bullet.gd | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/World/PlayerShip.gd b/World/PlayerShip.gd index 0bf7fb8..ab2f841 100644 --- a/World/PlayerShip.gd +++ b/World/PlayerShip.gd @@ -8,6 +8,7 @@ var Bullet = preload("res://World/bullet.tscn") var thrust = 6.0 var gravity := Vector2.ZERO +var last_shot_utime := 0 # Set by the authority, synchronized on spawn. @export var player := 1 : @@ -30,11 +31,17 @@ func _ready(): gravity = 1000*MapConfig.gravity * Vector2.LEFT.rotated(deg_to_rad(MapConfig.gravityangle)) + func shoot(): + if Time.get_ticks_usec() < last_shot_utime + 1000000 * MapConfig.firerepeatrate / MapConfig.framespersecond: + return + # "Muzzle" is a Marker2D placed at the barrel of the gun. var b = Bullet.instantiate() - b.start($"Muzzle main".global_position, rotation) + b.start($"Muzzle main".global_position, velocity, rotation) get_tree().root.add_child(b) + last_shot_utime = Time.get_ticks_usec() + func _physics_process(delta): rotation += input.rotate diff --git a/World/bullet.gd b/World/bullet.gd index 49cc545..fb0853d 100644 --- a/World/bullet.gd +++ b/World/bullet.gd @@ -5,10 +5,10 @@ var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") var speed = 750 @onready var life_time: float = MapConfig.shotlife -func start(_position, _direction): +func start(_position, _velocity, _direction): rotation = _direction position = _position - velocity = Vector2(speed, 0).rotated(rotation) + velocity = _velocity + Vector2(speed, 0).rotated(rotation) func _physics_process(delta): var collision = move_and_collide(velocity * delta)