38 lines
893 B
GDScript
38 lines
893 B
GDScript
extends Actor
|
|
|
|
|
|
func _ready() -> void:
|
|
set_physics_process(false)
|
|
velocity.x = -30
|
|
|
|
|
|
# TODO adapt to groups
|
|
func _on_StompDetector_body_entered(body: Node) -> void:
|
|
if body.global_position.y > get_node("StompDetector").global_position.y:
|
|
return
|
|
get_node("EnemyBody").disabled = true
|
|
die()
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
velocity.y += _gravity * delta
|
|
if is_on_wall() or !is_safe_drop():
|
|
velocity.x *= -1.0
|
|
velocity.y = move_and_slide(velocity, FLOOR_NORMAL).y
|
|
|
|
func is_safe_drop():
|
|
for raycast in $LedgeDetectorRays.get_children():
|
|
if raycast.is_colliding():
|
|
var collider = raycast.get_collider()
|
|
if collider.is_in_group("harmful"):
|
|
return false
|
|
return true
|
|
|
|
func die() -> void:
|
|
queue_free()
|
|
levelState.kills += 1
|
|
|
|
func _on_EnemySkin_area_entered(area:Area2D) -> void:
|
|
if area.is_in_group("harmful"):
|
|
get_node("EnemyBody").disabled = true
|
|
die()
|