Add ship movement and shooting mechanics; update flying ship scene with new components
This commit is contained in:
33
scripts/components/ship_shooter.gd
Normal file
33
scripts/components/ship_shooter.gd
Normal file
@@ -0,0 +1,33 @@
|
||||
class_name ShipShooter
|
||||
extends Node
|
||||
|
||||
@export var bullet_scene: PackedScene
|
||||
@export var fire_rate: float = 0.2
|
||||
@export var bullet_spawn: Marker2D
|
||||
@export var shoot_sfx: AudioStreamPlayer2D
|
||||
|
||||
var can_shoot: bool = true
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if Input.is_action_just_pressed("attack") and can_shoot:
|
||||
shoot()
|
||||
|
||||
|
||||
func shoot() -> void:
|
||||
if not can_shoot:
|
||||
return
|
||||
|
||||
var bullet: Node2D = bullet_scene.instantiate()
|
||||
var init := bullet.get_node_or_null("ProjectileInitComponent") as ProjectileInitComponent
|
||||
if init:
|
||||
init.initialize({
|
||||
"position": bullet_spawn.global_position,
|
||||
})
|
||||
get_tree().current_scene.add_child(bullet)
|
||||
if shoot_sfx:
|
||||
shoot_sfx.play()
|
||||
|
||||
can_shoot = false
|
||||
await get_tree().create_timer(fire_rate).timeout
|
||||
can_shoot = true
|
Reference in New Issue
Block a user