spacegame/enemies/shootmodule.gd
2025-03-22 13:32:53 +01:00

26 lines
837 B
GDScript

extends Marker2D
class_name ShootModule
@export var bullet: PackedScene
@export var speed: float = 100.0
@export var knockback: float = 10.0
@export var timeout: float = 2.0
var can_shoot: bool = true
@onready var parent: RigidBody2D = get_parent()
func shoot() -> void:
if not can_shoot:
return
var instance : Bullet = bullet.instantiate() as Bullet
parent.get_parent().add_child(instance)
instance.global_position = global_position
instance.apply_central_impulse(Vector2.UP.rotated(global_rotation) * speed)
instance.apply_central_impulse(parent.linear_velocity.project(Vector2.UP.rotated(global_rotation)))
instance.player = parent.player
parent.apply_central_impulse(Vector2.DOWN.rotated(global_rotation) * knockback)
$flash.flash()
can_shoot = false
await get_tree().create_timer(timeout).timeout
can_shoot = true