class_name Crawler extends Entity @onready var player = get_parent().get_parent().get_node("Player"); @onready var sprite = $AnimatedSprite2D @onready var main_collider = $CollisionShape2D @onready var whip = $WhipArea ## Crawl towards the player but stay within striking distance and not super close const HEALTH = 40 const SPEED_MULTIPLIER = 50 const ATTACK_DAMAGE = 20 func _init() -> void: super._init(HEALTH, SPEED_MULTIPLIER, ATTACK_DAMAGE) #func _ready() -> void: #whip.visible = false func face_player(): var player_position = player.global_position var crawler_position = global_position if player_position.x > crawler_position.x and not sprite.flip_h: sprite.flip_h = true main_collider.position.x -= 62 position.x += 62 whip.position.x += 10 elif player_position.x < crawler_position.x and sprite.flip_h: sprite.flip_h = false main_collider.position.x += 62 position.x -= 62 whip.position.x -= 10 func _physics_process(delta: float) -> void: var distanceToPlayer = global_position.distance_to(player.global_position) var desiredDistance = 70 if sprite.flip_h: desiredDistance -= 69 face_player() print(distanceToPlayer) if distanceToPlayer > desiredDistance: velocity.x = speed face_player() if not sprite.flip_h: velocity.x *= -1 sprite.play("walk") else: velocity.x = 0 sprite.play("Whip") move_and_slide()