27 lines
677 B
GDScript3
27 lines
677 B
GDScript3
|
|
extends Node2D
|
||
|
|
|
||
|
|
|
||
|
|
var moving = false
|
||
|
|
@onready var player = get_tree().get_root().get_node("main/Player")
|
||
|
|
@onready var target = player.position
|
||
|
|
var speed = 500
|
||
|
|
|
||
|
|
var reached = false
|
||
|
|
signal target_reached
|
||
|
|
|
||
|
|
func _ready() -> void:
|
||
|
|
await get_tree().create_timer(1).timeout
|
||
|
|
moving = true
|
||
|
|
|
||
|
|
func _physics_process(delta: float) -> void:
|
||
|
|
if moving:
|
||
|
|
position += (target - global_position).normalized().rotated(-get_parent().rotation) * speed * delta
|
||
|
|
if((global_position - target).length() < 40):
|
||
|
|
moving = false
|
||
|
|
if not reached:
|
||
|
|
target_reached.emit()
|
||
|
|
reached = true
|
||
|
|
if has_node("Area2D") and $Area2D.overlaps_body(player):
|
||
|
|
player.hurt(1, global_position-player.position)
|
||
|
|
|