1234567891011121314151617181920212223242526272829303132333435363738 |
- extends Area2D
- class_name Bot
- const SKINS: Array[String] = ["blue", "green", "red", "yellow"]
- @onready var sprite: AnimatedSprite2D = $AnimatedSprite2D
- @onready var base: Area2D = null
- @onready var explosion_scene: PackedScene = load("res://assets/scenes/explosion.tscn")
- @export var speed: float = 64.0
- func _ready() -> void:
- base = get_tree().get_first_node_in_group("base")
- if base != null:
- var base_center = get_base_center()
- global_rotation = global_position.angle_to_point(base_center)
- sprite.play(SKINS.pick_random())
-
- func get_base_center() -> Vector2:
- return base.get_child(0).global_position
- func _physics_process(delta: float) -> void:
- if not visible:
- return
-
- if base != null:
- global_position = global_position.move_toward(get_base_center(), speed * delta)
- func die():
- var explosion = explosion_scene.instantiate()
- add_sibling(explosion)
- explosion.global_position = global_position
- queue_free()
- func _on_area_entered(area: Area2D):
- if area.is_in_group("base"):
- die()
-
|