我正在使用深度值向舞台添加“图层”对象。
然后我创建了自己的相机类。当我告诉相机向右移动时,我实际上在做的是告诉每个图层对象向左移动。
图层向左移动的距离取决于其深度变量的值...
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 :(得分:0)
相机深度应相对于图层 - I.E.,fCameraDepth - fTargetDepth。
制作将相机位置链接到物体位置的等式。然后用代数方式反转方程。我的猜测是它会涉及atan。
对于更简单的实现,我可能会建议深度只是介于0和1之间的变量.0处的对象距离无限远,1处的对象位于摄像机的深度。这样做会使数学变得更容易,不涉及切线或反正切。