国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

cocos2dx camera lua的設(shè)置

2019-11-09 14:13:43
字體:
供稿:網(wǎng)友

前言: 在搞一個(gè)cocos2dx 戰(zhàn)斗運(yùn)用到3d的項(xiàng)目。在游戲rootNode里面添加2個(gè)相機(jī)。用來展現(xiàn)map類和fight場景類的顯示。這樣子整個(gè)游戲就有3個(gè)相機(jī)了。一個(gè)是default的默認(rèn)相機(jī),相機(jī)深度為1。map類定義了相機(jī)深度為-2。fight場景類定義相機(jī)深度為-1。

cocos2dx的camera有幾個(gè)相機(jī)模式,默認(rèn)的,正交的,透視的可以參考這些文章的使用。

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都有一個(gè)CameraFlag和CameraDepth(可以理解為相機(jī)的名字和相機(jī)的拍攝地點(diǎn))。一,只有camera和其他node在同一個(gè)rootNode的時(shí)候相機(jī)才會(huì)作用于其他node。二,只有camera的flag和node的CameraMask相同時(shí)候,其他node才會(huì)顯示出來。

--根節(jié)點(diǎn)local rootNode = cc.Node:create()--相機(jī)1,深度為1camera1 = cc.Camera:create()camera1:setCameraFlag(1)--通過調(diào)用setDepth可以設(shè)置攝像機(jī)的繪制順序,越大的深度越繪制的靠上,所以默認(rèn)攝像機(jī)默認(rèn)是0,其他攝像機(jī)默認(rèn)是1。camera1:setDepth(1)rootNode:addChild(self.camera1)--圖片1顯示在深度為1的相機(jī)1上local sPRite1 = cc.Scale9Sprite:create("test.png")rootNode:addChild(sprite1)sprite1:setCameraMask(1) --設(shè)置在名字叫做1的相機(jī)上--此時(shí)圖片1會(huì)顯示在屏幕上--如果sprite1:setCameraMask(2),那么此圖片不會(huì)顯示在屏幕上

2,cocos2dx一開始會(huì)創(chuàng)建一個(gè)默認(rèn)攝像機(jī)default,默認(rèn)攝像機(jī)用于繪制ui,它是最后被繪制的。在做2d和3d混合的項(xiàng)目時(shí)候,一般來說需要一個(gè)另外的攝像機(jī)來繪制3d物體而不是默認(rèn)攝像機(jī),當(dāng)深度測試未開啟時(shí),可以調(diào)整攝像機(jī)的繪制順序,所有攝像機(jī)的繪制順序都是先繪制2d物體和不透明3d物體,然后繪制透明3d物體。

--自定義2個(gè)相機(jī)camera1:setCameraFlag(1)camera1:setDepth(1)camera1:setCameraFlag(2)camera1:setDepth(2)--分配場景到不同相機(jī)上面顯示uiLayer:setCameraMask(0)--默認(rèn)相機(jī),顯示2duimapLayer:setCameraMask(1)--相機(jī)1,顯示map地圖類fightLayer:setCameraMask(2)--相機(jī)2,用來顯示戰(zhàn)斗

3,游戲內(nèi)3d場景用的是正交攝像機(jī),置于游戲的最頂層

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,相機(jī)的cameraFlag在cocos有原生的8個(gè)定義

local cameraFlag ={ cc.CameraFlag.DEFAULT, cc.CameraFlag.USER1, cc.CameraFlag.USER2, cc.CameraFlag.USER3, cc.CameraFlag.USER4, cc.CameraFlag.USER5, cc.CameraFlag.USER6, cc.CameraFlag.USER7, cc.CameraFlag.USER8,}

5,說說在使用相機(jī)需要注意的

1,注意相機(jī)的深度,在不同相機(jī)混合的場景中,往往會(huì)因?yàn)椴煌鄼C(jī)的深度不同而導(dǎo)致場景ui消失, 此時(shí)要調(diào)整需要顯示的node的camera 或者 隱藏其他比之高深度camera的場景2,相機(jī)添加進(jìn)rootNode后,手動(dòng)去remove此相機(jī)會(huì)導(dǎo)致游戲閃退(cocos3.12,為啥?)3, 創(chuàng)建node,addchild到rootNode后,新添加的node需要每次調(diào)用setCameraFlag,設(shè)置被作用的攝像機(jī)4,camera在使用lookat函數(shù)的時(shí)候,必須在node調(diào)用setPostion函數(shù)之后。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳山县| 景东| 贺兰县| 昆明市| 新平| 大连市| 霍林郭勒市| 宿迁市| 汽车| 青浦区| 江门市| 儋州市| 西充县| 黄骅市| 浦东新区| 怀安县| 大关县| 孝昌县| 兴山县| 凉山| 柳州市| 金湖县| 凤庆县| 澳门| 浦东新区| 包头市| 德化县| 康乐县| 长子县| 延长县| 泸定县| 延吉市| 新巴尔虎左旗| 龙川县| 南澳县| 西乌珠穆沁旗| 太白县| 蒙城县| 应城市| 台前县| 汕尾市|