27 lines
1.1 KiB
GDScript
27 lines
1.1 KiB
GDScript
class_name SpreadPattern
|
|
extends BulletSpawnPattern
|
|
|
|
|
|
## Number of bullets to spawn along the spread.
|
|
@export_range(1, 1, 1, "or_greater") var bullet_count: int
|
|
## The speed that bullets will start with.
|
|
@export var bullet_speed: float
|
|
|
|
## Angular distance between first and last bullet.
|
|
@export_range(0.0, 360.0, 0.1, "radians_as_degrees") var spread
|
|
## Radius of the arc that bullets spawn along the edge of.
|
|
@export var radius: float
|
|
## Rotation of the entire 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 = remap(float(i), 0.0, float(bullet_count - 1), -spread * 0.5, spread * 0.5)
|
|
angle += 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)
|