Загрузка данных


extends KinematicBody2D

var velocity = Vector2.ZERO
var gravity = 300.0
var speed = 200.0
var jump_strength = -300.0
var direction = 1
var jump_timer = 0.0

func _ready():
	velocity.x = direction * speed
	randomize()
	jump_timer = rand_range(1.0, 3.0)

func _physics_process(delta: float) -> void:
	velocity.y += gravity * delta
	velocity.x = direction * speed
	velocity = move_and_slide(velocity, Vector2.UP)

	if is_on_wall():
		for i in get_slide_count():
			var collision = get_slide_collision(i)
			var normal = collision.normal
			if Vector2(direction, 0).dot(normal) < 0:
				direction *= -1
				break

	if is_on_floor():
		jump_timer -= delta
		if jump_timer <= 0.0:
			velocity.y = jump_strength
			jump_timer = rand_range(1.0, 3.0)

func _on_StompDetector_body_entered(body: Node2D) -> void:
	# Пропускаем всё, кроме игрока
	if not body is Player:
		return
	
	# Игрок должен быть выше детектора (прыгнул на голову)
	if body.global_position.y > get_node("StompDetector").global_position.y:
		return
	
	# Подбрасываем игрока
	if body.has_method("bounce"):
		body.bounce()
	
	die()

func die() -> void:
	queue_free()