Launcher.gd 987 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. extends Node2D
  2. signal get_firing
  3. enum State {
  4. READY,
  5. FIRING,
  6. WAITING,
  7. }
  8. const BULLET_SPEED = 200.0
  9. var _ballScene = preload("res://scenes/Ball.tscn")
  10. var nbAmmo = 5
  11. onready var target = $Target
  12. onready var source = $Source
  13. onready var shootDelay = $ShootDelay
  14. onready var current_state = State.READY
  15. func _input(event):
  16. if event is InputEventMouseButton and event.is_pressed() :
  17. trigger(event.position)
  18. func trigger(aim:Vector2):
  19. if (current_state == State.READY):
  20. current_state = State.FIRING
  21. target.position = aim
  22. emit_signal("get_firing")
  23. func shoot():
  24. var bullet = _ballScene.instance()
  25. bullet.position = source.position
  26. bullet.linear_velocity = (target.position - source.position).normalized()
  27. bullet.linear_velocity *= BULLET_SPEED
  28. add_child(bullet)
  29. func _on_ShootDelay_timeout():
  30. shoot()
  31. nbAmmo -= 1
  32. if (nbAmmo == 0):
  33. current_state = State.WAITING
  34. else:
  35. emit_signal("get_firing")
  36. func _on_Launcher_get_firing():
  37. shootDelay.start()