extends KinematicBody2D var fall = false export var fall_speed = 0.5 onready var startpos = position onready var fall_timer = $FallTimer onready var refresh_timer = $RefreshTimer onready var crush_area = $CrushArea onready var collision_shape = $CollisionShape2D onready var anims = $AnimationPlayer onready var sprite = $Sprite func _ready(): #Easy Mode if Game.is_easy_mode: fall_speed *= Game.easy_mode_speed_factor fall_timer.wait_time /= Game.easy_mode_speed_factor func _physics_process(delta): #Fall if fall: position.y += fall_speed #Crush the player for area in crush_area.get_overlapping_areas(): if area.is_in_group("player_hitbox"): var player = area.get_parent() if player.is_on_floor(): player.die() #Play animation when disappearing if !refresh_timer.is_stopped() && refresh_timer.get_time_left() <= 0.6: anims.play("disappear") func _on_Area2D_area_entered(area): if area.is_in_group("player_hitbox"): fall_timer.start() sprite.frame = 1 #func _on_VisibilityNotifier2D_screen_exited(): # position = startpos # fall = false # refresh_timer.stop() # anims.play("disappear", -1, -1.0, true) func _on_RefreshTimer_timeout(): collision_shape.disabled = true # disable collision # re-enable collision and set position at end of frame call_deferred("set_position", startpos) collision_shape.call_deferred("set_disabled", false) fall = false anims.play("idle") anims.play("disappear", -1, -1.0, true) sprite.frame = 0 func _on_FallTimer_timeout(): fall = true refresh_timer.start() #func _on_Area2D_area_exited(area): # if area.is_in_group("player_hitbox") && graphic == Graphics.GRAVEYARD: # sprite.frame = 0