24 lines
999 B
GDScript
24 lines
999 B
GDScript
class_name RingPattern
|
|
extends BulletSpawnPattern
|
|
## Spawns bullets evenly spaced out around a circle.
|
|
|
|
|
|
## The number of bullets to spawn along the circle.
|
|
@export var bullet_count: int = 3
|
|
## The speed that bullets will start with.
|
|
@export var bullet_speed: float
|
|
## Radius of the circle that bullets spawn along the edge of.
|
|
@export var radius: float
|
|
## Rotation of the entire ring pattern.
|
|
@export_custom(0, "radians_as_degrees") var angle_offset: float
|
|
## Rotation of each bullet's travel direction.
|
|
@export_custom(0, "radians_as_degrees") var direction_rotation: float
|
|
|
|
|
|
func _spawn_bullets(bullet_set: BulletSet, preset: BulletPreset) -> void:
|
|
for i in bullet_count:
|
|
var angle = (float(i) / float(bullet_count)) * TAU + angle_offset + bullet_set.spawn_rotation
|
|
var bullet = Bullet.create(preset, Vector2.from_angle(angle + direction_rotation))
|
|
bullet.speed = bullet_speed
|
|
bullet.position = bullet_set.spawn_offset + Vector2.from_angle(angle) * radius
|
|
bullet_set.add_bullet(bullet)
|