rb.velocity slow down when instantiated

So I want to make a 3d platformer with endless level. I heard that its better when the obstacles are moving towards you. So I have a tube where the player is inside and when it gets to certain Z (behind the camera) it destroys and spawns a new one with certain speed. However even when I applied rb.velocity , the cloned tube is slower…
I have these scripts
public Transform prefabTube;
public Vector3 offset;

void Update()
{
    if (this.transform.position.z <= -510)
    {
        Instantiate(prefabTube, offset, Quaternion.Euler(90, 0, 0));
        Destroy(this.gameObject);

    }
}

and velocity
public Rigidbody rb;
public float speed = 2000f;
void Start()
{

    rb.velocity = new Vector3(0, 0, -speed * Time.deltaTime);
    
}

I don’t really get it when .velocity should add constant speed…

Your problem is because performance… Your Pc is trying to calculate the physics of so many objects.

First. where did you listen this lie “I heard that its better when the obstacles are moving towards you”. As less objects moving, better performance. Make the charactermove and the camera follow the character…

So remake this part of the game.

Second. Using Rigidbody to move things, is good if you pretend that to be a “physical” object (mass, inertia, gravity, etc…). The ground shouldnt be moving by its rigidbody. move the transform directly and make tit Kinematic.

Once you finished with this, continue with your problem.

PS:You still need to learn basic Unity things as i can see, dont hesitate to spend some hours watching tutorials.

Bye!