tool extends Node2D onready var anims = $AnimationPlayer onready var flip_timer = $FlipTimer onready var delay_timer = $DelayTimer onready var static_body = $StaticBody2D export var time:float = 60 export var delay = 0.0 export var texture: Texture setget _set_texture onready var time_ms = time / 60.0 # Time is converted from frames @ 60fps to ms onready var collision_layer = static_body.collision_layer func _ready(): if Engine.editor_hint: return _set_texture(texture) #Auto start if delay variable is zero if delay == 0.0: anims.play("idle") flip_timer.start(time_ms) else: delay_timer.start(delay) #Easy mode time_ms /= Game.enemy_speed_factor func _set_texture(new_texture: Texture) -> void: texture = new_texture if is_inside_tree(): $Sprite.texture = new_texture func _on_AnimationPlayer_animation_finished(anim_name): #Return to idle after turn animation if anim_name == "turn": anims.play("idle") flip_timer.start(time_ms) func _on_FlipTimer_timeout(): anims.play("turn") func _on_DelayTimer_timeout(): anims.play("idle") flip_timer.start(time_ms) func _on_DetectPlayer_body_entered(body: Node) -> void: if body.is_in_group("player"): static_body.collision_layer = 0 func _on_DetectPlayer_body_exited(body: Node) -> void: if body.is_in_group("player"): static_body.collision_layer = collision_layer