Implements a lightning projectile with visual effects. The lightning is created using a series of bolt components that dynamically adjust their shape. Also refactors the projectile system to use a base class. Removes unused modifiers from player script.
30 lines
728 B
GDScript
30 lines
728 B
GDScript
class_name ProjectileLightning
|
|
extends ProjectileBase
|
|
|
|
@export var line_width: float = 1
|
|
@onready var lightning: Array = get_children()
|
|
|
|
func _init() -> void:
|
|
#super._init()
|
|
Log.pr("ProjectileLightning _init")
|
|
|
|
func _ready():
|
|
lifetime_timer = Timer.new()
|
|
add_child(lifetime_timer)
|
|
lifetime_timer.one_shot = true
|
|
lifetime_timer.wait_time = lifetime
|
|
lifetime_timer.connect("timeout", _on_lifetime_timeout)
|
|
lifetime_timer.start()
|
|
|
|
emit_signal("on_spawned", self)
|
|
connect("body_entered", _on_body_entered)
|
|
|
|
func _process(_delta):
|
|
for child in lightning:
|
|
child.goal_point = target_position
|
|
|
|
func _physics_process(delta):
|
|
position += direction * speed * delta
|
|
|
|
func _on_lifetime_timeout():
|
|
super._on_lifetime_timeout()
|