Cannon.gd 976 B

12345678910111213141516171819202122232425262728
  1. extends Node2D
  2. @export var item: PackedScene = preload("uid://bumvqjhs2xxka")
  3. @export_range(0, 8, 1) var head_angle := 0
  4. @export_range(0, 4, 1) var stand_angle := 0
  5. var amount := 0
  6. func _ready() -> void:
  7. $Timer.start()
  8. func shoot() -> void:
  9. if amount >= 3 or $Head/Raycast.is_colliding():
  10. return
  11. var node = item.instantiate()
  12. var direction_vector = [Vector2.UP, Vector2(1, -1), Vector2.RIGHT, Vector2(1, 1), Vector2.DOWN, Vector2(-1, 1), Vector2.LEFT, Vector2(-1, -1), Vector2.UP][head_angle]
  13. node.set("direction_vector", direction_vector)
  14. node.set("velocity", 100 * direction_vector)
  15. if direction_vector.x != 0:
  16. node.set("direction", sign(direction_vector.x))
  17. node.global_position = global_position
  18. if item.resource_path != "res://Scenes/Prefabs/Entities/Objects/CannonBall.tscn":
  19. node.global_position += direction_vector * 4
  20. node.tree_exited.connect(func(): amount -= 1)
  21. amount += 1
  22. AudioManager.play_sfx("cannon", global_position)
  23. add_sibling(node)