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()