You can actually offset drawing with:
void draw_set_transform( Vector2 position, float rotation, Vector2 scale )
From the docs:
Sets a custom transform for drawing via components. Anything drawn afterwards will be transformed by this.
func _draw():
draw_circle_custom(100) # at Vector2(0, 0) relative to canvas item
draw_set_transform(Vector2(200, 0), 0.0, Vector2(1.0, 1.0))`
draw_circle_custom(100) # will be drawn with offset 200 pixels right ->
Or you could just draw the circle on a separate canvas item (Node2D
) as child of the root scene, and simply set it's position/transform with corresponding property.
Think of drawing as of commands that are passed to the rendering engine, these commands are then interpreted and drawn all in order.