--透视摄像机
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()
end
function MainScene:onEnter()
end
function MainScene:onExit()
end
return MainScene