I’m not sure if this would help or not, but you could try using a TextureRect node instead of a Sprite. You can combine Control-based nodes and Node2D-based nodes.
The positioning sometimes is a little tricky when using Node2D nodes as children of Control-based nodes but using Control-based nodes with Node2D nodes doesn’t have any positioning quirks (that I remember at least). If you use a TextureRect node, then you should be able to access the pivot offset property :smile:
Edit: Also, you can use a shader to across the texture by changing the UV by TIME
. I’m away from my machine right now, but a shader like this should work:
shader_type canvas_item;
uniform float scroll_speed = 0.2;
void fragment() {
COLOR = texture(TEXTURE, UV + vec2(TIME * scroll_speed, TIME * scroll_speed));
}