Ok so no combination of things seemed to make this right
Stumbled on a work around however since its harder to do with Node2D's added a ReferenceRect child but any control node to scale can work
extends Area2D
var has_mouse_focus = false
var click_animation = false
func _ready():
connect("mouse_entered", self, "set", ["has_mouse_focus", true])
connect("mouse_exited", self, "set", ["has_mouse_focus", false])
func _process(_delta):
if has_mouse_focus and not click_animation:
$Hover.play("hover")
elif $ReferenceRect.get_global_rect().has_point(get_global_mouse_position()):
$Hover.play("hover")
elif not has_mouse_focus and not click_animation:
$Hover.play("not_hover")
if Input.is_action_just_pressed("mb_left") and has_mouse_focus and click_animation == false:
click_animation = true
$Hover.play("click")
$Timer.start()
func _on_Timer_timeout():
click_animation = false