--透视摄像机local camera = cc.Camera:createPerspective(fieldOfView,aspectRatio,nearPlane,farPlane)--fieldOfView, number 类型 表示透视摄像机视野,通常是40~60度--aspectRatio, number 类型 表示视平面宽/高比例--nearPlane, number 类型 表示近平面到视点的距离--farPlane, number 类型 表示远平面到视点的距离--正交摄像机local camera = cc.Camera:createOrthographic(zoomX,zoomY,nearPlane,farPlane)--zoomX, number 类型,表示平面宽--zoomY, number 类型 表示平面高--nearPlane number 类型 表示近平面到视点的距离--farPlane number 类型 表示远平面到视点的距离-- 摄像机位置-- 摄像机同样是一个节点,创建后需要添加到父节点上才能工作scene:addChild(camera)-- 摄像机创建后默认坐标为(0,0)锚点为(0,0) 2D游戏使用正交摄像机,一般不需要修改坐标与锚点,如果要修改,使用下面接口camera:lookAt(target,up)--lookAt以观察平面来计算摄像机位置,其内部最终还是调用了setPosition3D,参数说明如下--1 target cc.vec3类型 表示观察区域平面的中心点坐标--2 up cc.vec3 类型 表示target 到视点的方向向量--摄像机掩码--摄像机创建并添加到节点后,节点及其子节点的渲染都收到摄像机掩码的影响--首先 摄像机自身有一个CameraFlag 通过下面的接口进行设置camera:setCameraFlag(flag)--1 cc.CameraFlag.DEFAULT 等于1--2 cc.CameraFlag.USER1 等于1<<1--3 cc.CameraFlag.USER1 等于1<<2--4 cc.CameraFlag.USER1 等于1<<3--5 cc.CameraFlag.USER1 等于1<<4--6 cc.CameraFlag.USER1 等于1<<5--7 cc.CameraFlag.USER1 等于1<<6--8 cc.CameraFlag.USER1 等于1<<7--9 cc.CameraFlag.USER1 等于1<<8
--自定义摄像机local MainScene = class("MainScene", function() return display.newScene("MainScene")end)function MainScene:ctor() local layer = display.newLayer() layer:addTo(self) display.newSprite("bj1.jpg") :pos(display.cx,display.cy) :addTo(layer) local startX = 100 local player = display.newSprite("heart.png") :pos(display.cx,display.cy) :addTo(layer) player:runAction(cc.MoveTo:create(4,cc.p(display.cx,800))) local camera = cc.Camera:createOrthographic(display.width,display.height,0,1) camera:setCameraFlag(cc.CameraFlag.USER1) layer:addChild(camera) --默认会地柜设置所有子节点,如果子节点在这行代码之后加入,子节点需要自行设置照相机掩码 layer:setCameraMask(2) self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT,function(dt)- camera:setPositionY(player:getPositionY()-startX) end)
self:scheduleUpdate()endfunction MainScene:onEnter()endfunction MainScene:onExit()endreturn MainScene