49 lines
1.3 KiB
GDScript
49 lines
1.3 KiB
GDScript
extends "../enemy.gd"
|
|
|
|
export (int) var pellett_count = 10
|
|
export (int) var pellett_radius = 10
|
|
export (float) var pellett_speed = 0.6
|
|
export (int) var pellett_rows_per_wave = 3
|
|
export (int) var pellet_waves = 3
|
|
|
|
var shoot_timer = Timer.new()
|
|
var phase = -1
|
|
var max_phase
|
|
var pellett = preload("res://entities/pellett/pellett.tscn")
|
|
|
|
func _ready():
|
|
shoot_timer.one_shot = true
|
|
shoot_timer.wait_time = 0.5
|
|
add_child(shoot_timer)
|
|
max_phase = pellet_waves * pellett_rows_per_wave
|
|
|
|
func _process(delta):
|
|
if shoot_timer.is_stopped() && phase >= 0 && phase <= max_phase:
|
|
if phase % pellett_rows_per_wave == 0:
|
|
shoot_timer.wait_time = 3.5
|
|
else:
|
|
shoot_timer.wait_time = 0.5
|
|
phase += 1
|
|
var angle_step = 2.0 * PI / pellett_count
|
|
var angle = 0
|
|
for i in range(0, pellett_count):
|
|
var direction = Vector2(cos(angle), sin(angle))
|
|
var pos = position + direction * pellett_radius
|
|
var pellett_shot = pellett.instance()
|
|
pellett_shot.position = pos
|
|
angle += angle_step
|
|
pellett_shot.velocity = direction * pellett_speed
|
|
level.add_child(pellett_shot)
|
|
shoot_timer.start()
|
|
|
|
func _physics_process(delta):
|
|
if phase == -1 && position.y < 40:
|
|
velocity.y = 0.8
|
|
elif phase == - 1:
|
|
phase = 1
|
|
velocity = Vector2(0, 0)
|
|
|
|
if shoot_timer.is_stopped() && phase >= max_phase - 1:
|
|
velocity.y = 0.8
|
|
collision_info = move_and_collide(velocity)
|