国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Cocos2d-x中3D相機的使用

來源:懂視網 責編:小采 時間:2020-11-09 08:32:10
文檔

Cocos2d-x中3D相機的使用

Cocos2d-x中3D相機的使用:本教程是講Cocos2d-x中相機的使用,在Cocos2d-x 3.2版本中加入了相機這個類,這個類在3D游戲中是必不可少的,因為3D游戲是一個立體的世界,在3D游戲中的攝像機就相當于是我們的睛,通過它我們可以觀察整個的游戲世界。相機相當于人的睛,人在用睛看物體的時
推薦度:
導讀Cocos2d-x中3D相機的使用:本教程是講Cocos2d-x中相機的使用,在Cocos2d-x 3.2版本中加入了相機這個類,這個類在3D游戲中是必不可少的,因為3D游戲是一個立體的世界,在3D游戲中的攝像機就相當于是我們的睛,通過它我們可以觀察整個的游戲世界。相機相當于人的睛,人在用睛看物體的時

本教程是講Cocos2d-x中相機的使用,在Cocos2d-x 3.2版本中加入了相機這個類,這個類在3D游戲中是必不可少的,因為3D游戲是一個立體的世界,在3D游戲中的攝像機就相當于是我們的睛,通過它我們可以觀察整個的游戲世界。相機相當于人的睛,人在用睛看物體的時

本教程是講Cocos2d-x中相機的使用,在Cocos2d-x 3.2版本中加入了相機這個類,這個類在3D游戲中是必不可少的,因為3D游戲是一個立體的世界,在3D游戲中的攝像機就相當于是我們的眼睛,通過它我們可以觀察整個的游戲世界。相機相當于人的眼睛,人在用眼睛看物體的時候,可以從理論上的任意位置,以任意的角度觀察物體,所以物體的形狀會受到相機的位置、旋轉角度的影響而影響。

上圖就是在3D游戲中使用相機的原理,當然這是一個透視投影的相機,我們在游戲中的相機就是根據圖中的原理實現的。在游戲中一般有兩種類型的相機:一種就是上圖中介紹的透視相機,它在3D游戲中是很常見的。還有一種是正交投影相機,它沒有像透視投影一樣的近大遠小的效果而是在相機內任何位置的物體的大小都是一樣的,通常這種類型的相機都用在角色屬性面板中顯示的角色模型。說完了相機的兩種類型,下面我們來看看在Cocos2d-x中我們是如何來創建相機的:

上面的代碼就是創建了一個透視投影的相機,下面我來說明下參數的意義:第一個參數是FOV,即視場角(field of view),它可以理解為你的視線左右能看多寬(以角度計)第二個就是上述所有的寬高比,最后兩個是相機的近裁面和遠裁面,這個也很好理解,距離相機比近裁面還要近的,比遠裁面還要遠的,都不會被渲染到。

上圖是正交相機的原理。

上面的代碼就是創建了一個正交投影的相機,下面我來說明下參數的意義:第一個參數是相機的寬度,第二個就是相機的高度,最后兩個是相機的近裁面和遠裁面,這個也很好理解,距離相機比近裁面還要近的,比遠裁面還要遠的,都不會被渲染到。這個和透視相機是一樣的。接下來,我們需要對相機設置一個標記位(FLAG),這樣可以讓相機與其他的相機區分開來--在一些游戲的應用中,通常不僅僅只有一個相機,如果有多個相機的話,那么我們要標記一個物體,到底是要被哪一個相機所"看到",這時候,我們就需要設置它的CameraMask來與相機的Flag對應:

如果同時存在多個相機,怎么標記某個物體被那些相機看到呢?


注意到Camera中有個_cameraFlag屬性,為枚舉類型,定義如下

1

2

3

4

5

6

7

8

9

10

11

12

enum class CameraFlag

{

DEFAULT = 1,

USER1 = 1 << 1,

USER2 = 1 << 2,

USER3 = 1 << 3,

USER4 = 1 << 4,

USER5 = 1 << 5,

USER6 = 1 << 6,

USER7 = 1 << 7,

USER8 = 1 << 8,

};

Node中有個_cameraMask的屬性,當相機的_cameraFlag & _cameraMask為true時,該Node可以被該相機看到。所以在上述相機的創建代碼中,camera的CameraFlag設置為CameraFlag::USER1,并且該layer的CameraMask為2,則表示該layer只能被CameraFlag::USER1相機看到。如果你設置的精靈的cameraMask是3的話,它也是能被cameraFlag為CameraFlag::USER1和CameraFlag::USER2的相機看到的。我們還要注意如果你的精靈是在layer設置cameraMask之后添加的,它是不會被看到的,還需要手動再設置精靈的cameraMask。不要以為這樣就可以了,最后我們還要把相機添加到場景中,不然我們還是看不到效果的,一定要記住呀,下圖就是把相機加到場景中的代碼:

這樣一來我們就算是創建好相機啦,這只還是第一部喲,下面我來說下相機在游戲中是如何使用的。


一般來說在3D游戲中相機有三種使用方式:

  • 第一種就是自由相機

  • 第二種是第一人稱相機

  • 第三種是第三人稱相機


  • 下面我們先來說第一種自由相機,這種類型的相機一般都多用在即時戰略類型的游戲中,比如魔獸爭霸3用的就是自由相機,這類相機可以隨著鼠標的移動而移動,能夠看到游戲場景中的任何位置,下圖就是自由相機在Cocos2d-x中的使用方法:

    怎么樣是不是很簡單,我們其實只要在移動函數中把在屏幕移動的距離賦值給相機,讓相機跟隨移動就可以了,需要注意的是我們在屏幕上上下移動相對于相機是前后移動,所以我們要把在屏幕移動的y值賦給相機的z,而且方向是反的因為我們向下滑屏幕相機是向前移動下上滑相機是向后移動。那么大家會問,我們既然是3D相機那么y軸怎么移動吶?下圖就是相機拉近和拉遠的實現:

    第一張圖是拉近,第二張圖是拉遠。這樣我們也可以用Cocos2d-x來制作魔獸爭霸3這樣的游戲啦。


    接下來我們來看第二種類型的相機,那就是第一人稱的相機,這種相機其實很好理解,它就相當于是我們的眼睛看到的東西,這種相機多用在FPS類型的游戲中,像是使命的召喚就是這類相機,那么它能不能在Cocos2d-x中實現吶?答案是肯定的,我們來看下圖:

    其實就是把相機的位置綁在你在游戲中控制的角色上就可以啦,我們使用sprite3d的移動來代替在屏幕上滑動,也就是說我們在屏幕上滑動不是控制相機而是控制sprite3d,再把sprite3d的移動賦給相機,大家可能會問FPS游戲還可以旋轉視角呀?咱們的相機可以實現,下面讓我們來看代碼:

    這個是向左旋轉。

    這個是向右旋轉。

    通過這樣的設置我們就能實現FPS游戲的效果了。


    最后再來介紹下第三人稱的相機,這類的相機多應用在MMORPG類型游戲中,這種類型的游戲是我們最最常見的游戲類型,現在大多數的網游都是這樣的相機,它其實就是把第一人稱的相機的位置設定在我們控制的角色身后一定距離的位置上,以便我們能看清自己操控的游戲角色,在Cocos2d-x中的實現和第一人稱相機類似,相同的部分我們就不再說明了就是在得到角色位置賦值給相機后再把相機的位置加上個偏移量就可以了,偏移量我們用offset表示,如下圖:

    其他的像移動和旋轉和第一人稱相機是一樣的,我就不在這里贅述了,這樣就可以實現第三人稱的相機了。


    好了,今天的教程就先講到這里,通過這篇教程,我們就可以在Cocos2d-x中創建屬于我們自己的相機啦,通過創建相機來制作我們自己的3D游戲,以上講的三種相機的實現以及使用方法都是非常簡單的入門級介紹,可能大家覺得不太完整,沒關系大家可以參考CppTest中的Camera Test這個代碼,我的教程就是基于它寫的,在Camera Test中有詳細的代碼實現供大家參考,希望大家能過制作出比肩大作的游戲,謝謝!


    本文主要匯總Cocos引擎中文站以及Cocos2d-x論壇中的關于Cocos2d-x 3D相關的教程,幫助大家更快地了解Cocos2d-x中的3D功能。

  • Cocos2d-x的3D特性

  • Earth Warrior 3D 大揭秘

  • 分析《FantasyWarrior3D》結構

  • Cocos2d-x 3D 模型抗鋸齒方法

  • Cocos2d-x 3.3 的3D開發功能介紹

  • Cocos2d-x 3D 建模規范及注意事項

  • Cocos2d-x 3.x 3D跑酷游戲系列教程

  • Cocos2d-x 3D《捕魚達人3》系列教程

  • Cocos2d-x 3D 模型查看器(Mac & Win)

  • Cocos2d-x 3D fbx-conv 批量轉換腳本

  • Cocos2d-x 塔防游戲贼來了加入3D特性

  • Cocos2d-x Sprite3D用法和相關特性詳解

  • Cocos2d-x 3D FantasyWarrior3D 項目開源

  • Cocos2d-x 3D戰斗類游戲制作【模塊一】-- 數據庫(1)

  • Cocos2dx 3D戰斗類游戲制作【模塊一】-- 數據庫(2)

  • 【Cocos2d-x 3.2】總結Grid3DAction 幾種常用3D特效


  • 看了這么多篇的3D教程,是否對Cocos2d-x的3D功能有了更多更好的了解了呢?也把你的開發經驗或者實戰項目分享給大家吧!

    http://blog.csdn.net/minsenwu/article/details/17120495

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Cocos2d-x中3D相機的使用

    Cocos2d-x中3D相機的使用:本教程是講Cocos2d-x中相機的使用,在Cocos2d-x 3.2版本中加入了相機這個類,這個類在3D游戲中是必不可少的,因為3D游戲是一個立體的世界,在3D游戲中的攝像機就相當于是我們的睛,通過它我們可以觀察整個的游戲世界。相機相當于人的睛,人在用睛看物體的時
    推薦度:
    標簽: 相機 使用 教程
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 免费观看成人www精品视频在线 | 日韩欧美在线播放 | 伊人久久大香线蕉综合爱婷婷 | 成人欧美一区二区三区视频 | 国产一区精品在线观看 | 特黄日韩免费一区二区三区 | 无遮挡在线观看 | 亚欧乱色视频网站大全 | 亚洲精品视频免费观看 | 91在线资源 | 99精品久久99久久久久 | 国产免费一区二区三区 | 九九久久99综合一区二区 | 伊人久久大香线蕉综合爱婷婷 | 久久精品国产精品亚洲毛片 | 欧美日本韩国一区二区 | 精品免费久久久久国产一区 | 久久久久久久99久久久毒国产 | 欧美国产中文 | 久久久久久91精品色婷婷 | 精品国产日韩亚洲一区二区 | 国产成人久久精品一区二区三区 | 国内精品久久久久影院网站 | 91热成人精品国产免费 | 国产原创视频在线 | 免费看男女做好爽好硬视频 | 国产精欧美一区二区三区 | 欧美日韩精品一区二区三区 | 日韩免费在线观看视频 | 欧美一区二区三 | 亚洲一区二区三区精品影院 | 夜色毛片永久免费 | 在线视频一区二区 | 日韩国产综合 | 超在线视频 | 精品国产一区二区三区免费看 | 国产精品一区视频 | 国产精品1区2区3区 国产精品1234区 | 欧美在线1 | 国产69久久精品成人看小说 | 99久久国内精品成人免费 |