Lightning.gd 946 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. extends Sprite
  2. onready var light: Light2D = $"Light"
  3. onready var timer: Timer = $"Timer"
  4. onready var sound = $"AudioStreamPlayer2D"
  5. var expanding: bool = false
  6. var landed: bool = false
  7. func _ready():
  8. set_visible(false)
  9. light.set_visible(false)
  10. func strike(target: Vector2):
  11. set_position(target)
  12. set_visible(true)
  13. expanding = true
  14. var region = get_region_rect()
  15. region.size.y = 0
  16. sound.play()
  17. set_region_rect(region)
  18. func play():
  19. sound.play()
  20. func _process(_delta):
  21. if expanding:
  22. var region = get_region_rect()
  23. region.size.y += 18
  24. if region.size.y > 256:
  25. region.size.y = 256
  26. expanding = false
  27. landed = true
  28. light.set_visible(true)
  29. timer.start()
  30. set_region_rect(region)
  31. if landed:
  32. var intensity = min(timer.get_time_left(), 1.0)
  33. set_modulate(Color(1, 1, 1, intensity))
  34. light.set_energy(intensity * 10.0)
  35. if timer.is_stopped():
  36. landed = false
  37. set_visible(false)
  38. light.set_visible(false)