forked from team-sg/hero-mark-2
43 lines
1 KiB
GDScript
43 lines
1 KiB
GDScript
extends Node2D
|
|
|
|
onready var cast = $RayCast2D
|
|
export var fall_speed = 100
|
|
var fall = false
|
|
onready var refresh_timer = $RefreshTimer
|
|
onready var anims = $AnimationPlayer
|
|
onready var startpos = position
|
|
|
|
func _ready():
|
|
# adjust to difficulty
|
|
fall_speed *= Game.enemy_speed_factor
|
|
|
|
func _physics_process(delta):
|
|
if cast.is_colliding():
|
|
var collider = cast.get_collider()
|
|
if collider.is_in_group("player_hitbox") or collider.is_in_group("msx"):
|
|
anims.play("wiggle")
|
|
|
|
if fall == true:
|
|
position.y += fall_speed * delta
|
|
|
|
if !refresh_timer.is_stopped() && refresh_timer.get_time_left() <= 0.6:
|
|
anims.play("disappear")
|
|
|
|
|
|
|
|
func _on_Hitbox_area_entered(area):
|
|
if area.is_in_group("player_hitbox"):
|
|
area.get_parent().die()
|
|
|
|
|
|
func _on_RefreshTimer_timeout():
|
|
call_deferred("set_position", startpos)
|
|
fall = false
|
|
anims.play("idle")
|
|
anims.play("disappear", -1, -1.0, true)
|
|
|
|
|
|
func _on_AnimationPlayer_animation_finished(anim_name):
|
|
if anim_name == "wiggle":
|
|
if fall == false: refresh_timer.start()
|
|
fall = true
|