42 lines
1.1 KiB
GDScript
42 lines
1.1 KiB
GDScript
extends KinematicBody2D
|
|
|
|
const SPEED: int = 35
|
|
|
|
export var creepy_hand: PackedScene
|
|
|
|
var player: KinematicBody2D = null
|
|
var velocity: Vector2 = Vector2.ZERO
|
|
|
|
|
|
func _physics_process(_delta: float) -> void:
|
|
velocity = Vector2.ZERO
|
|
|
|
if player:
|
|
if position.distance_to(player.position) < 40:
|
|
velocity = position.direction_to(player.position).normalized() * -SPEED
|
|
elif position.distance_to(player.position) > 41:
|
|
velocity = position.direction_to(player.position).normalized() * SPEED
|
|
|
|
velocity = move_and_slide(velocity)
|
|
return
|
|
|
|
|
|
func _on_player_detector_body_entered(body: Node) -> void:
|
|
if body.is_in_group('player'):
|
|
player = body
|
|
return
|
|
|
|
|
|
func _on_player_detector_body_exited(body: Node) -> void:
|
|
if body.is_in_group('player'):
|
|
player = null
|
|
return
|
|
|
|
|
|
func _on_projectile_timer_timeout() -> void:
|
|
if player:
|
|
var projectile: Node = creepy_hand.instance()
|
|
projectile.init($Sprite.global_position, player.position)
|
|
get_tree().get_current_scene().get_node('Projectiles').add_child(projectile)
|
|
return
|