So I have movement controls that I have created, and they do what I want when directly in the script of the child I want to move, but I want to control multiple similar units from their parent script, rather than having script on each child. However, the scrip that I have, which allows for the unit to rotate by 60 degrees and move in the direction that it is facing works only when attached directly to the child. I thought my changes to the code on the parent would have been sufficient but it doesn't seem so.

PROBLEM: So the specific problem is that it will only move left and right with the acceleration and deceleration, which is expected before it turns. However once I rotate my desire would be that it would go in the new rotated direction, however it still only goes left and right. So it moves and rotates, it just doesn't match the direction of its movement to the rotation degree.

So the only thing that I can thing of is either in the fact that originally var = Self, but that doesn't work from the parent, or maybe that position is reading from the parent and not the child, but than I'd think it wouldn't move correctly but would leap across screen. Here is the code...

func _process(_delta):
	var i = 0
	var the_unit = arr_ship[i]
	var curr_pos = the_unit.position
	if Input.is_action_just_pressed("accelerate"):
		the_unit.global_position = curr_pos + Vector2(1,0).rotated(deg_to_rad(rotation_degrees)) * Vector2(128,128)
	if Input.is_action_just_pressed("decelerate"):
		the_unit.global_position = curr_pos + Vector2(-1,0).rotated(deg_to_rad(rotation_degrees)) * Vector2(128,128)
	if Input.is_action_just_pressed("rotate_left"):
		the_unit.rotation_degrees -= 60
	if Input.is_action_just_pressed("rotate_right"):
		the_unit.rotation_degrees += 60

I forget the actual doc you could reference for this but I think you need to be using .transform.x for the function you are wanting. You could also make the "children" a class instead and have all those members of the class name have the same movement function. Then it's just instancing and such to move them in and out. This code below assumes you have speed variables declared of course.

KidsCanCode provided this on the Godot forums:

func _process(delta):
    if Input.is_action_pressed("forward"):
        the_unit.global_position += transform.x * speed * delta

    SnapCracklins Hey thanks for that, unfortunately I am moving on a hex grid tile, so it isn't smooth movement, but rather snapping to coordinates, that is why my code might seem kind of funky. So I am trying to move them Vector2() 128 in whichever direction they are facing when they rotate, if that might make more sense. I am currently not concerned about smooth movement between these Vectors at this point in my coding, since I am primarily using the movement as a test base for several other components I need to create. However, I do want to to function as properly since it worked when it was attached directly to the child.