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)