Попытка создать эффект параллакса во flash AS3 - PullRequest
1 голос
/ 15 декабря 2009

Я добавляю объекты «слоя» на сцену со значением глубины.

Затем я создал свой собственный класс камеры. Когда я говорю камере перемещаться вправо, то, что я на самом деле делаю, говорит каждому объекту слоя двигаться влево.

Расстояние, на которое слой переместился влево, зависит от значения его переменной глубины ...

var fCameraDepth = 1;
var fTan:Number = Math.tan( fCameraMovement / fCameraDepth );
oLayer.x += fTan * fLayerDepth

Это хорошо работает и дает мне действительно хороший эффект параллакса. У меня проблема в том, что я хочу, чтобы камера могла смотреть видеоклип на любом слое, но мне сложно понять, как преобразовать координаты видеоклипов в глубину камеры.

Я пытаюсь что-то вроде этого ...

var fCameraDepth = 1;
var fCameraPosition:Number = oCamera.x;

// the layer will have a + or - x val compared to the camera so we 
// need to take that into account when getting the targets position
var fTargetPosition:Number = oActor.x + oActor.getLayer().x;
var fTargetDepth:Number = oActor.getLayer().getDepth();

var fTan:Number = Math.tan( fTargetPosition / fTargetDepth );

var fTargetPositionAdjusted:Number = fTan * fCameraDepth;

oCamera.x = fTargetPositionAdjusted;

Но камера просто гаснет где-то (нигде рядом с видеоклипом)

Может кто-нибудь обдумать это?

1 Ответ

0 голосов
/ 15 декабря 2009

Глубина камеры должна быть относительно слоя - т.е., fCameraDepth - fTargetDepth.

Составьте уравнение, которое связывает положение камеры с положением объекта. Затем обратное уравнение алгебраически. Я предполагаю, что это будет включать атан.

Для более простой реализации я мог бы порекомендовать, чтобы глубина была просто переменной от 0 до 1. Объекты в 0 бесконечно удалены на расстоянии, а объекты в 1 - на глубине камеры. Выполнение этого приведет к гораздо более легкой математике, которая не включает тангенс или арктангенс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...