godot-shooter / commit
Remove barrel from the player class, change how the bullets are added to the scene.
actors/Player.gd | 2 +- actors/Player.tscn | 6 ------ weapons/Weapon.gd | 14 +++++++++----- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/actors/Player.gd b/actors/Player.gd index e342128..edb8921 100644 --- a/actors/Player.gd +++ b/actors/Player.gd @@ -208,7 +208,7 @@ func turn_towards(dest: Vector2, _delta: float): func shoot_at(pos: Vector2): if weapon.ammo != INF && weapon.ammo <= 0: weapon = create_default_weapon() - weapon.try_shoot(owner, $Barrel, pos) + weapon.try_shoot(self, pos) func set_objective(objective: String) -> void: hud.objective = objective diff --git a/actors/Player.tscn b/actors/Player.tscn index 90948e7..0652a01 100644 --- a/actors/Player.tscn +++ b/actors/Player.tscn @@ -372,12 +372,6 @@ text = "Replay!" [node name="Camera2D" type="Camera2D" parent="."] current = true -[node name="Barrel" type="Position2D" parent="."] -rotation = -3.14044 -__meta__ = { -"_gizmo_extents_": 14.2 -} - [connection signal="debug_signal" from="UI/HUD" to="." method="_on_HUD_debug_signal"] [connection signal="paused" from="UI/HUD" to="." method="_on_HUD_paused"] [connection signal="position_set" from="UI/HUD" to="." method="_on_HUD_position_set"] diff --git a/weapons/Weapon.gd b/weapons/Weapon.gd index a026fae..c7aa55a 100644 --- a/weapons/Weapon.gd +++ b/weapons/Weapon.gd @@ -9,11 +9,15 @@ var damage_amount = 1 var ammo = INF var name = "Laser" var reload_size = 1 -var last_shoot_time: float = 0 +var last_shoot_time: float const Utils = preload("res://utils/Utils.gd") -func try_shoot(owner: Node2D, barrel: Node2D, target: Vector2) -> void: +func _init() -> void: + var now = Time.get_unix_time_from_system() + last_shoot_time = now + +func try_shoot(shooter: Node2D, target: Vector2) -> void: var has_ammo = ammo == INF or ammo > 0 if not has_ammo: return @@ -28,8 +32,8 @@ func try_shoot(owner: Node2D, barrel: Node2D, target: Vector2) -> void: ammo = ammo - 1 var particle_instance = particle.instance() - owner.add_child(particle_instance) - particle_instance.transform = barrel.global_transform + shooter.owner.add_child(particle_instance) + particle_instance.transform = shooter.global_transform particle_instance.damage_amount = self.damage_amount - particle_instance.global_rotation = barrel.global_position.angle_to_point(target) + PI / 2.0 + particle_instance.global_rotation = shooter.global_position.angle_to_point(target) + PI / 2.0 last_shoot_time = now