hey njamster,
I might do that yes, but I will need to shrink the game down, this might take a bit.
Always appreciate your input helping a new comer.
Before I do this tho, considering the the WHOLE tree node move. How would you separate the line2d's position from it other than setastoplevel ?
from my tower.gb, this is my "shooting" function :
func shoot(multi = 0):
if multi == 1 and can_shoot: #multi shoot, cool down is handled in "in target"
var m = Missile.instance()
get_parent().add_child(m) #Instance the Missile (Linked above)
m.start($spawn.global_transform, target)
elif can_shoot and is_instance_valid(target): ##single target shoot
var m = Missile.instance()
get_parent().add_child(m) #Instance the Missile (Linked above)
m.start($spawn.global_transform, target)
can_shoot = false
yield(get_tree().create_timer(cooldown), "timeout") #Attack speed
can_shoot = true
as soon as the projectile is spawn, i call the function start() with the target argument.
This is my projectile tree :

This is start() (Very simple) :
func start(_transform, _target): #moving the projectile toward the target
global_transform = _transform
velocity = transform.x * speed
target = _target
Now in the process delta, i use 2 functions : seek and steer to face the enemy, go toward the enemy and my steering force :
acceleration += seek()
This is seek :
func seek(): #seek the enemy
var steer = Vector2.ZERO
if target and is_instance_valid(target):
var desired = (target.position - position).normalized() * speed
steer = (desired - velocity).normalized() * steer_force
return steer
That's about it.
My line2d is the one listed in the main post.