2009-12-15 80 views
1

我加入「層」的對象的階段與深度值的視差效應。試圖創建在閃光AS3

我已經然後創建了自己的相機類。當我告訴相機向右移動時,Im實際上正在做的是告訴每個圖層對象向左移動。

,該層移動到左側的距離是基於其深度變量的值...

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; 

但相機剛跑開了某個地方(任何地方的影片剪輯附近)

任何人都可以得到他們的頭周圍呢?

回答

0

相機深度應相對於層 - 即fCameraDepth - fTargetDepth。

請鏈接攝像頭位置物體位置的方程。然後以代數方式反轉該等式。我的猜測是它會涉及atan。

對於一個簡單的實現,我可能會建議深度是簡單的,在0℃和1對象之間的變量是在距離無限遠,在1對象在相機的深度。這樣做會導致數學更容易,不涉及切線或反正切。