rework bullet speed a wee bit
This commit is contained in:
parent
ddf3590c96
commit
08763960ca
5 changed files with 16 additions and 11 deletions
|
|
@ -38,6 +38,9 @@ static var _hitbox_shapes: Dictionary[Vector2i, RectangleShape2D] = {}
|
|||
_hitbox_shapes[hitbox_size] = new_shape
|
||||
_hitbox.shape = _hitbox_shapes[hitbox_size]
|
||||
|
||||
## The speed at which the bullet should travel.
|
||||
@export var speed: float
|
||||
|
||||
## The direction that the bullet is travelling.
|
||||
@export_custom(0, "direction") var direction: Vector2 = Vector2.RIGHT
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,6 @@ extends BulletBehavior
|
|||
## Makes bullets move in [member Bullet.direction], potentially accelerating.
|
||||
|
||||
|
||||
## Initial speed of the bullet when it is spawned.
|
||||
@export_custom(0, "suffix:px/s") var initial_speed: float = 0.0
|
||||
|
||||
## Rate at which the bullet will speed up.
|
||||
@export_custom(0, "suffix:px/s²") var acceleration: float = 0.0
|
||||
|
||||
|
|
@ -25,7 +22,6 @@ var _bullet_data: Dictionary[Bullet, Data] = {}
|
|||
|
||||
func _init_bullet(bullet: Bullet) -> void:
|
||||
var data = Data.new()
|
||||
data.speed = initial_speed
|
||||
_bullet_data[bullet] = data
|
||||
|
||||
|
||||
|
|
@ -37,15 +33,14 @@ func _process_bullet(bullet: Bullet, delta: float) -> void:
|
|||
if not _bullet_data.has(bullet):
|
||||
return
|
||||
var data = _bullet_data[bullet]
|
||||
data.speed += acceleration * delta
|
||||
if not data.already_clamped and (data.speed <= min_speed or data.speed >= max_speed):
|
||||
bullet.speed += acceleration * delta
|
||||
if not data.already_clamped and (bullet.speed <= min_speed or bullet.speed >= max_speed):
|
||||
data.already_clamped = true
|
||||
if action_speed_clamped:
|
||||
action_speed_clamped.perform(bullet)
|
||||
data.speed = clampf(data.speed, min_speed, max_speed)
|
||||
bullet.position += bullet.direction * data.speed * delta
|
||||
bullet.speed = clampf(bullet.speed, min_speed, max_speed)
|
||||
bullet.position += bullet.direction * bullet.speed * delta
|
||||
|
||||
|
||||
class Data:
|
||||
var speed: float
|
||||
var already_clamped: bool = false
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ extends BulletSpawnPattern
|
|||
|
||||
## Number of bullets to spawn along the line.
|
||||
@export var bullet_count: int
|
||||
## The speed that bullets will start with.
|
||||
@export var bullet_speed: float
|
||||
## Distance between the first and last bullet in the line.
|
||||
@export var line_width: float
|
||||
## The direction that spawned bullets will travel, orthogonal to the line of bullets.
|
||||
|
|
@ -14,6 +16,7 @@ extends BulletSpawnPattern
|
|||
func _spawn_bullets(bullet_set: BulletSet, preset: BulletPreset) -> void:
|
||||
for i in bullet_count:
|
||||
var bullet = Bullet.create(preset, line_normal.rotated(bullet_set.spawn_rotation))
|
||||
bullet.speed = bullet_speed
|
||||
|
||||
var line = line_normal.orthogonal().rotated(bullet_set.spawn_rotation)
|
||||
var weight = float(i) / float(bullet_count - 1)
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ extends BulletSpawnPattern
|
|||
|
||||
## 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.
|
||||
|
|
@ -17,5 +19,6 @@ 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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue