bot.gd 1011 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. extends Area2D
  2. class_name Bot
  3. const SKINS: Array[String] = ["blue", "green", "red", "yellow"]
  4. @onready var sprite: AnimatedSprite2D = $AnimatedSprite2D
  5. @onready var base: Area2D = null
  6. @onready var explosion_scene: PackedScene = load("res://assets/scenes/explosion.tscn")
  7. @export var speed: float = 64.0
  8. func _ready() -> void:
  9. base = get_tree().get_first_node_in_group("base")
  10. if base != null:
  11. var base_center = get_base_center()
  12. global_rotation = global_position.angle_to_point(base_center)
  13. sprite.play(SKINS.pick_random())
  14. func get_base_center() -> Vector2:
  15. return base.get_child(0).global_position
  16. func _physics_process(delta: float) -> void:
  17. if not visible:
  18. return
  19. if base != null:
  20. global_position = global_position.move_toward(get_base_center(), speed * delta)
  21. func die():
  22. var explosion = explosion_scene.instantiate()
  23. add_sibling(explosion)
  24. explosion.global_position = global_position
  25. queue_free()
  26. func _on_area_entered(area: Area2D):
  27. if area.is_in_group("base"):
  28. die()