33 lines
913 B
GDScript
33 lines
913 B
GDScript
extends Marker2D
|
|
|
|
@export var bullet: PackedScene
|
|
@export var speed: float = 100.0
|
|
@export var knockback: float = 30.0
|
|
@export var energy_cost: float = 0.5
|
|
|
|
@onready var flash: Flash = %flash
|
|
@export var player: Player
|
|
|
|
@export var sprite_scale: Vector2
|
|
|
|
var can_shoot: bool = true
|
|
|
|
func shoot() -> void:
|
|
if not can_shoot or $animations.is_playing():
|
|
return
|
|
$animations.play("shoot")
|
|
|
|
func do_shoot() -> void:
|
|
if not can_shoot:
|
|
return
|
|
if player.reactor.try_drain(energy_cost):
|
|
var instance : Bullet = bullet.instantiate() as Bullet
|
|
player.get_parent().add_child(instance)
|
|
instance.global_position = global_position
|
|
instance.apply_central_impulse(Vector2.UP.rotated(global_rotation) * speed)
|
|
instance.player = player
|
|
player.apply_central_impulse(Vector2.DOWN.rotated(global_rotation) * knockback)
|
|
flash.flash()
|
|
can_shoot = false
|
|
await get_tree().create_timer(0.5).timeout
|
|
can_shoot = true
|