Раствор А
Где-то в вашем коде вы определяете смещение фона для каждого кадра. Вы можете просто инвертировать * это значение и добавить его к общей сумме каждого кадра:
totalDistance += -backdropOffset;
Если смещение определено в пикселях, вы должны преобразовать его в единицу игрового мира (километры, световые годы, ...), прежде чем отобразить расстояние.
* Если корабль движется вперед, фон «скользит» в другом направлении.
Решение B (больше работы, но меньше головной боли)
На самом деле движется не фон; это корабль. Так почему бы не переместить корабль и не проследить за ним с помощью камеры?
Вы сможете делать все виды движений. Прямо сейчас вы должны инвертировать каждое движение корабля, а затем применить его к фону. Вроде нелогично, тебе не кажется? Таким образом, благодаря этому решению ваш код будет намного ближе к реальности => меньше головной боли во время отладки, упростит обслуживание вашего приложения, и вы будете быстрее добавлять новые функции.
И, конечно, получить общее расстояние было бы так же просто, как и
var totalDistance = myShip.Position.Y;