2009-12-15 4 views
1

Я добавляю к слою «слой» объекты с глубиной.Пытается создать эффект параллакса во вспышке AS3

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

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

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

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

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

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; 

Но камера просто блуждает где-то (не где вблизи видеоклипа)

Можно ли получить их голову вокруг этого?

ответ

0

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

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

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

Смежные вопросы