cocos2dx camera lua的设置
来源:互联网 发布:淘宝ued团队 编辑:程序博客网 时间:2024/05/16 18:21
前言: 在搞一个cocos2dx 战斗运用到3d的项目。在游戏rootNode里面添加2个相机。用来展现map类和fight场景类的显示。这样子整个游戏就有3个相机了。一个是default的默认相机,相机深度为0。map类定义了相机深度为-2。fight场景类定义相机深度为-1。
cocos2dx的camera有几个相机模式,默认的,正交的,透视的可以参考这些文章的使用。
http://blog.csdn.net/fox64194167/article/details/42811939?ref=myread http://blog.csdn.net/mingzznet/article/details/42003427 http://www.cnblogs.com/manshuoquan/p/5347139.html
1,cocos2dx的camera都有一个CameraFlag和CameraDepth(可以理解为相机的名字和相机的拍摄地点)。一,只有camera和其他node在同一个rootNode的时候相机才会作用于其他node。二,只有camera的flag和node的CameraMask相同时候,其他node才会显示出来。
--根节点local rootNode = cc.Node:create()--相机1,深度为1camera1 = cc.Camera:create()camera1:setCameraFlag(2)--通过调用setDepth可以设置摄像机的绘制顺序,越大的深度越绘制的靠上,所以默认摄像机默认是0,其他摄像机默认是1。camera1:setDepth(1)rootNode:addChild(self.camera1)--图片1显示在深度为1的相机1上local sprite1 = cc.Scale9Sprite:create("test.png")rootNode:addChild(sprite1)sprite1:setCameraMask(2) --设置在名字叫做1的相机上--此时图片1会显示在屏幕上--如果sprite1:setCameraMask(4),那么此图片不会显示在屏幕上
2,cocos2dx一开始会创建一个默认摄像机default,默认摄像机用于绘制ui,它是最后被绘制的。在做2d和3d混合的项目时候,一般来说需要一个另外的摄像机来绘制3d物体而不是默认摄像机,当深度测试未开启时,可以调整摄像机的绘制顺序,所有摄像机的绘制顺序都是先绘制2d物体和不透明3d物体,然后绘制透明3d物体。
--自定义2个相机camera1:setCameraFlag(2)camera1:setDepth(1)camera1:setCameraFlag(4)camera1:setDepth(2)--分配场景到不同相机上面显示uiLayer:setCameraMask(1)--默认相机,显示2duimapLayer:setCameraMask(2)--相机1,显示map地图类fightLayer:setCameraMask(4)--相机2,用来显示战斗
3,游戏内3d场景用的是正交摄像机,置于游戏的最顶层
local visibleSize = cc.Director:getInstance():getVisibleSize()local cameraDistance = 1000local cameraWidth = 750local cameraHeight = -1000local cameraDepth = 1500local camera = cc.Camera:createOrthographic(visibleSize.width, visibleSize.height, 1, cameraDepth*2)camera:setPosition3D(cc.vec3(0,0, cameraDepth))camera:setCameraFlag(3)camera:setDepth(3)rootNode:addChild(camera)
4,相机的cameraFlag在cocos有原生的8个定义
local cameraFlag ={ cc.CameraFlag.DEFAULT, --1 cc.CameraFlag.USER1, --2 cc.CameraFlag.USER2, --4 cc.CameraFlag.USER3, --8 cc.CameraFlag.USER4, --16 cc.CameraFlag.USER5, --32 cc.CameraFlag.USER6, --64 cc.CameraFlag.USER7, --128 cc.CameraFlag.USER8, --256}
5,说说在使用相机需要注意的
1,注意相机的深度,在不同相机混合的场景中,往往会因为不同相机的深度不同而导致场景ui消失, 此时要调整需要显示的node的camera 或者 隐藏其他比之高深度camera的场景2,相机添加进rootNode后,手动去remove此相机会导致游戏闪退(cocos3.12,为啥?)3, 创建node,addchild到rootNode后,新添加的node需要每次调用setCameraFlag,设置被作用的摄像机4,camera在使用lookat函数的时候,必须在node调用setPostion函数之后。5, 在有3d和2d的场景,想显示2d的label或者图片正常显示,可以用 cc.BillBoard:create()来替代cc.Node。这样就可以正常显示了
0 0
- cocos2dx camera lua的设置
- cocos2dx的lua绑定
- cocos2dx的lua绑定
- cocos2dx的lua绑定
- cocos2dx的lua绑定
- cocos2dx lua 设置模拟器窗口大小
- cocos2dx + lua 中实现 lua的MVC
- cocos2dx中lua的问题解决
- cocos2dx的lua绑定 【转】
- Cocos2dx lua Label的换行
- cocos2dx,lua,倒计时的应用
- cocos2dx lua
- cocos2dx+lua
- cocos2dx-lua
- Cocos2dx lua
- [cocos2dx lua]cocos2dx lua入门
- quick-cocos2dx cocos2dx.lua
- lua: cocos2dx lua 加密
- java基础--8.多线程
- Vue.js——60分钟快速入门
- VS2015 Cordova Ionic移动开发
- LintCode 427:Generate Parentheses
- poj 1054The Troublesome Frog
- cocos2dx camera lua的设置
- ES6常用新特性总结
- java_ee_sdk-7u2的安装与 启动
- 判断一个整数是否是2的阶次方数
- Listener之使用HttpSessionListener和HttpSessionAttributeListener
- Android IOS 电视 开发之 app 更新
- HashMap排序输出
- Windows live write 安装报错,出现错误0x80190194解决方案
- IntelliJ IDEA软件中svn使用方法Downloads