How do I move a cube 1 unit at a time after 1 second?,How to move a GameObject one unit after one second until it reached it boundary?

I need help moving a cube 1 unit to the right after 1 second until it reached its boundary on the right side, which is 4. So it would take it 4 seconds to reach 4 while only appearing 4 times at 1, 2, 3, and 4, starting at 0 on the x axis. Then move the cube to the other boundary which is -4. So it would take 8 seconds appearing at 4, 3, 2, 1, 0 ,-1, -2, -3, and -4. The back and forth movement will be done for the whole game. ,I have a block and I want to move it 1 unit to the right after 1 second until it reaches 4 then move it -1 unit after 1 second until it goes to -4 and so on. So it will take 4 seconds to reach 4 units to the right and then 8 seconds to -4 from 4, then another 8 seconds from 4 to -4 and so on.

Good day.

I think you need to know about Invoke function, which allow to execute a method placed in the same script in a fixed time.

For example:

float movingTime= 3;

        if (Collider.tag == MapBorder)
        Invoke ("MoveCube", movingTime);
    void MoveCube()
        "Move Cube"

When cube reaches the border, will be moved after 3 seconds.

If helped, accept the answer! :D

You could set a timer in the Update function that get +1 every second.
Then if timer = 2 → cube position x = 2 and so on.
After 8 seconds you reset the timer to 0.
I guess there is a way better and shorter solution to this, but this comes to my mind first.