How to make the worldPos sampler texture and offset in the fragment shader

my vertex shader:

precision highp float; 
attribute vec3 position; 
uniform float _Time;
uniform vec2 cloud_uv;
uniform float _CloudSpeed;
uniform float _CloudScale;
uniform sampler2D _Cloud;
uniform mat4 world;
uniform mat4 viewProjection;
void main(void) {
                vec3 object_pos = position;
                vec4 world_Pos = world * vec4(object_pos,1.0);
                vec4 view_pos = viewProjection * world_Pos;
                gl_Position = view_pos;                 
                vec2 skyuv = vec2(worldPos.x,worldPos.z) / clamp(worldPos.y, 0., 10000.);
                vec2 cloud_uv = skyuv +(_Time*_CloudSpeed);
                cloud_uv *=_CloudScale;
                }

my fragment shader:

precision highp float;
uniform sampler2D _Cloud;
varying vec2 vUv;
varying vec4 worldPos;
uniform float _Time;
uniform vec2 cloud_uv;
uniform float _CloudSpeed;
uniform float _CloudScale;
void main(void) {
         float cloud = texture2D(_Cloud, cloud_uv).x;
         gl_FragColor = vec4(cloud,cloud,cloud,1.0);
         }

Why does the Texture not have offset?

Could you create a repro in the Playground with your code so that we can better understand what the problem is?

If your problem is passing the world pos from the vertex to the fragment shader, you must declare the variable in the vertex as you did in the fragment shader: varying vec4 worldPos; and set it in the vertex shader: worldPos = world_Pos;.

Thank you,May I ask you another question?
How to get Y direction of a directionlight in customshader

You will have to pass it via a uniform variable. Maybe this doc can help you:

Here’s a simple example which is passing a test variable to the shader: