Приветствую всех форумчан.
В процессе создания игры с использованием псевдо 3d, назрел вопрос следующего характера : во время движения объекты расположенные на большом расстоянии движутся быстрее чем объекты расположенные поблизости, как избавится от этого недуга ?
Опишу логику, которую использую для перемещения объектов:

Код AS3:
var groundObject:MovieClip = new GroundObject(); // объект, двигающийся навстречу
var objPosition:Object = {x_pos:0,y_pos:0,z_pos:300};// расположение объекта на псевдо 3d сцене
var zPosOfCamera:Number = 0; // расположение камеры, которая начнет "двигаться" вперед в ENTER_FRAME
// далее следует метод, который я вызываю в ENTER_FRAME
// он выполняет перемещение объекта
// DITANCE_TO_HORIZONT - константа, описывающая расстояние до горизонта
//
function move():void
{
// расстояние от камеры до объекта
var dz:Number = objPosition.z_pos - zPosOfCamera;
// определяю scale для объекта исходя из расположения его по оси Z относительно камеры
// как мне кажется это и есть моя проблема, т.к. я получаю линейную зависимость
var scale:Number = ( DITANCE_TO_HORIZONT - dz) / DITANCE_TO_HORIZONT;
groundObject.x = objPosition.x_pos * scale;
groundObject.y = objPosition.y_pos * scale;
groundObject.scaleX = groundObject.scaleY = scale;
zPosOfCamera += 1;
}
пример упрощен, по сравнению с приложением, т.к. в рабочем коде очень много лишнего(не касающегося текущей проблемы).
Возможно кто-то сталкивался с такой проблемой или использовал другую логику ? подскажите как исправить ситуацию.
Не смог прикрепить swf-ку, поэтому выложил
сюда