28 lines
808 B
GDScript
28 lines
808 B
GDScript
extends Node2D
|
|
|
|
@onready var startpos = position
|
|
@export var speed = 1.0
|
|
@export var sine_distance = 64.0
|
|
@export var shoot_cooldown = 1.0
|
|
const BULLET = preload("res://bat/bat_bullet/bat_bullet.tscn")
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
%ShootTimer.start(shoot_cooldown)
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _physics_process(delta):
|
|
var sine = sin(Time.get_ticks_msec() / 300.0) * sine_distance
|
|
position.y = startpos.y + sine
|
|
|
|
|
|
func _on_shoot_timer_timeout() -> void:
|
|
var player = get_owner().get_node("Player")
|
|
var bullet = BULLET.instantiate()
|
|
bullet.global_position = global_position
|
|
get_parent().add_child(bullet)
|
|
if player.position.x < position.x:
|
|
bullet.direction = -1
|
|
else:
|
|
bullet.direction = 1
|