This repository has been archived on 2024-08-28. You can view files and clone it, but cannot push or open issues or pull requests.
gmtk-2024/scripts/crawler.gd

57 lines
1.4 KiB
GDScript3
Raw Normal View History

class_name Crawler extends Entity
2024-08-18 17:12:13 +00:00
@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
2024-08-18 17:12:13 +00:00
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()