I modify my code with this :

I store the X offset like this :

**scrolloffsetX** = oldPos.x - p.x;

and then add this offset in this line :

transform.position = transform.position + new Vector3((SpeedX * Time.deltaTime) +

**scrolloffsetX**, SpeedY * Time.deltaTime, 0);

Now, the scrolling occurs with SpeedX values below '4' but it wasn't fluid even with higher values than '4'.

I put a link to the demo project if you want to see (you need to built the project because results can be weird in the editor):

https://www.dropbox.com/s/fc7ma3ew5q626 ... 9.zip?dl=0**Code:**

void Update()

{

//transform.Translate(SpeedX * Time.deltaTime, SpeedY * Time.deltaTime, 0);

transform.position = transform.position + new Vector3((SpeedX * Time.deltaTime) + scrolloffsetX, SpeedY * Time.deltaTime, 0);

if (FixJitters)

{

Vector3 oldPos = transform.localPosition;

int i_x = Mathf.FloorToInt(transform.localPosition.x * (float)pixelsPerUnit);

int i_y = Mathf.FloorToInt(transform.localPosition.y * (float)pixelsPerUnit);

int i_z = Mathf.FloorToInt(transform.localPosition.z * (float)pixelsPerUnit);

Vector3 p = new Vector3((float)i_x / (float)pixelsPerUnit, (float)i_y / (float)pixelsPerUnit, (float)i_z / (float)pixelsPerUnit);

//float halfSize = (1.0F / (float)pixelsPerUnit) * 0.5F;

// if (alignHalfPixelsOff_XAxis){p.x += halfSize;}

//if (alignHalfPixelsOff_YAxis){p.y += halfSize;}

scrolloffsetX = oldPos.x - p.x;

transform.localPosition = p;

}

}