摄像机

  1. --透视摄像机
  2. local camera = cc.Camera:createPerspective(fieldOfView,aspectRatio,nearPlane,farPlane)
  3. --fieldOfView, number 类型 表示透视摄像机视野,通常是40~60
  4. --aspectRatio, number 类型 表示视平面宽/高比例
  5. --nearPlane, number 类型 表示近平面到视点的距离
  6. --farPlane, number 类型 表示远平面到视点的距离
  7. --正交摄像机
  8. local camera = cc.Camera:createOrthographic(zoomX,zoomY,nearPlane,farPlane)
  9. --zoomX, number 类型,表示平面宽
  10. --zoomY, number 类型 表示平面高
  11. --nearPlane number 类型 表示近平面到视点的距离
  12. --farPlane number 类型 表示远平面到视点的距离
  13. -- 摄像机位置
  14. -- 摄像机同样是一个节点,创建后需要添加到父节点上才能工作
  15. scene:addChild(camera)
  16. -- 摄像机创建后默认坐标为(0,0)锚点为(0,0) 2D游戏使用正交摄像机,一般不需要修改坐标与锚点,如果要修改,使用下面接口
  17. camera:lookAt(target,up)
  18. --lookAt以观察平面来计算摄像机位置,其内部最终还是调用了setPosition3D,参数说明如下
  19. --1 target cc.vec3类型 表示观察区域平面的中心点坐标
  20. --2 up cc.vec3 类型 表示target 到视点的方向向量
  21. --摄像机掩码
  22. --摄像机创建并添加到节点后,节点及其子节点的渲染都收到摄像机掩码的影响
  23. --首先 摄像机自身有一个CameraFlag 通过下面的接口进行设置
  24. camera:setCameraFlag(flag)
  25. --1 cc.CameraFlag.DEFAULT 等于1
  26. --2 cc.CameraFlag.USER1 等于1<<1
  27. --3 cc.CameraFlag.USER1 等于1<<2
  28. --4 cc.CameraFlag.USER1 等于1<<3
  29. --5 cc.CameraFlag.USER1 等于1<<4
  30. --6 cc.CameraFlag.USER1 等于1<<5
  31. --7 cc.CameraFlag.USER1 等于1<<6
  32. --8 cc.CameraFlag.USER1 等于1<<7
  33. --9 cc.CameraFlag.USER1 等于1<<8

  1. --自定义摄像机
  2. local MainScene = class("MainScene", function()
  3. return display.newScene("MainScene")
  4. end)
  5. function MainScene:ctor()
  6. local layer = display.newLayer()
  7. layer:addTo(self)
  8. display.newSprite("bj1.jpg")
  9. :pos(display.cx,display.cy)
  10. :addTo(layer)
  11. local startX = 100
  12. local player = display.newSprite("heart.png")
  13. :pos(display.cx,display.cy)
  14. :addTo(layer)
  15. player:runAction(cc.MoveTo:create(4,cc.p(display.cx,800)))
  16. local camera = cc.Camera:createOrthographic(display.width,display.height,0,1)
  17. camera:setCameraFlag(cc.CameraFlag.USER1)
  18. layer:addChild(camera)
  19. --默认会地柜设置所有子节点,如果子节点在这行代码之后加入,子节点需要自行设置照相机掩码
  20. layer:setCameraMask(2)
  21. self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT,function(dt)
  22. camera:setPositionY(player:getPositionY()-startX) end)
  23. self:scheduleUpdate()
  24. end
  25. function MainScene:onEnter()
  26. end
  27. function MainScene:onExit()
  28. end
  29. return MainScene





posted @ 2017-01-04 14:40  feizuzu  阅读(451)  评论(0编辑  收藏  举报