政安晨【示例演繹虛擬世界開發】(五):從制作一個對戰小游戲開始(Cocos Creator 《擊敗老大》)(第二段)

政安晨的個人主頁政安晨

歡迎?👍點贊?評論?收藏

收錄專欄:?AI虛擬世界大講堂

希望政安晨的博客能夠對您有所裨益,如有不足之處,歡迎在評論區提出指正!

現在我們已經學會了如何向場景中添加圖片,接下來繼續為游戲場景添加更多的元素,并進一步完善場景布局。


修改游戲設計分辨率

在通常情況下,為了方便場景的搭建工作,在開發游戲之前會選擇一個合適的分辨率來作為藍本,并以此為基礎進行整體界面的搭建,而作為藍本的分辨率也被稱為設計分辨率。在咱們這篇文章中,我們將采用比較主流的1280px×720px分辨率。

根據前面預覽運行的效果,不難發現預覽運行時展示的內容區域與編輯器中的Canvas區域是一致的。

這個時候我們會很自然地聯想到,如果直接修改Canvas的尺寸,或許就可以達到間接修改設計分辨率的目的。

當我們嘗試在層級管理器中選中【Canvas】節點時

會發現節點下的UI變換組件的【ContentSize】有一個“鎖”圖標,輸入框也是灰色的,因此我們并不能直接對該屬性進行修改,如下圖所示。

在Cocos Creator中,如果想要修改游戲中的分辨率,則需要在項目設置中進行統一配置。在編輯器頂部選擇【項目】→【項目設置】命令,打開項目設置面板,在【項目數據】選項卡中可以直接修改游戲的設計分辨率,如下圖所示。

現在將【設計寬度】和【設計高度】的值分別修改為【720】和【1280】,修改完成后回到場景,再次選中【Canvas】組件,此時我們會發現游戲場景區域的寬高比已經發生了變化,同時Canvas里的UI變換組件的屬性也同步發生了改變,如下圖所示。

上述為同步變化的UI變換組件的屬性

這里需要注意的是,此時游戲的設計分辨率已經產生了變化,當我們再次預覽運行時,可能游戲區域超出了瀏覽器的顯示范圍,瀏覽器可能會有顯示不全并且出現滾動條的情況(看瀏覽器的情況),如下圖所示。

如果游戲區域超出了瀏覽器的顯示范圍,可以通過Chrome預覽窗口左上角的下拉菜單調整預覽分辨率,根據實際需求選擇一個合適的分辨率即可。

使用變換工具

在搭建游戲場景的過程中,經常會有對節點進行移動、旋轉、縮放等操作的需求,這個時候我們可以通過主窗口左上角工具欄的變換工具來操作場景中的相關節點。工具欄中從左往右依次為移動變換工具、旋轉變換工具、縮放變換工具、矩形變換工具、變換吸附設置,如下圖所示。

在默認狀態下,移動變換工具是處于激活狀態的,在層級管理器中選中需要移動的節點,就可以使用移動變換工具來對當前節點進行移動了。如果移動變換工具并沒有處于激活狀態,那么我們也可以通過點擊工具欄的第一個按鈕進行激活,或者使用組合鍵“Ctrl+W”,將變換工具切換為移動變換工具。

在確保移動變換工具被激活后,我們可以通過移動鼠標將【enemy】節點拖動到游戲場景的上方。如果仔細觀察將會發現,在移動的過程中,【enemy】節點上的【Position】屬性也會隨之變化,這說明移動變換工具會在我們操作時動態地修改節點坐標的位置,如下圖所示。

依次將三個技能圖標及重新開始圖標拖動到游戲場景中,之后使用同樣的方式操作移動變換工具,將圖標調整到合適的位置,完成后如下圖所示。

父節點與子節點變換關系

在通常情況下,場景中的節點會以樹狀結構呈現。每個節點都可以有多個子節點,而子節點的更新依賴于父節點,當父節點進行變換時子節點會隨之變換。我們可以利用這個特性間接地批量調整子節點的位置。

在了解了這一特性后,我們繼續在場景中添加敵人的招式圖標。首先在【Canvas】節點下新建一個空節點并命名為【enemy_skill】,然后在【enemy_skill】下依次添加三個技能的圖片作為其子節點,最后只需要使用移動變換工具操作【enemy_skill】節點,即可完成所有技能圖標的整體移動,完成后如下圖所示。

節點的遮擋關系

我們已經向enemy_skill中添加了三個節點,由于它們的坐標默認重疊在了一起,因此我們只能看到一個圖標,但是為什么看到的是最后一個添加的盾牌圖標呢?

這是因為在Cocos Creator中,UI節點的渲染和遮擋關系會受到節點樹的影響,從而按照層級管理器中節點的排列順序從上到下依次渲染,也就是說在列表上面的節點在場景顯示中會被在列表下面的節點遮蓋住。我們向enemy_skill中添加了三個節點,由于默認狀態下它們的坐標是一致的,且盾牌圖標的節點處于最下方,因此我們只看到了盾牌圖標。

現在可以嘗試修改enemy_skill子節點的順序來觀察遮擋關系的變化。例如,可以將代表盾牌的2號節點移動到流星錘的上方,由于節點的排列順序發生了變化,因而遮擋關系也會隨之改變,可以看到此時流星錘圖標已經顯示了出來,如下圖所示。

添加提示文本

我們制作的游戲場景比較簡單,為了能夠向玩家反饋游戲結果,還需要在游戲中添加提示文本信息。這里我們可以使用Label組件,右擊【Canvas】節點,在彈出的快捷菜單中選擇【創建】→【2D對象】→【Label(文本)】命令,創建一個Label組件,并將其命名為【hint】。可以在屬性檢查器中看到Label組件的相關屬性,如下表所示。

在屬性檢查器中將Label的【FontSize】【LineHeight】屬性的值都修改為【40】,之后將【String】屬性修改為【出招中...】,如下圖所示。


這一段咱們已經完成,接下來的文章中,我們繼續。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715962.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715962.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715962.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機設計大賽 深度學習機器視覺車道線識別與檢測 -自動駕駛

文章目錄 1 前言2 先上成果3 車道線4 問題抽象(建立模型)5 幀掩碼(Frame Mask)6 車道檢測的圖像預處理7 圖像閾值化8 霍夫線變換9 實現車道檢測9.1 幀掩碼創建9.2 圖像預處理9.2.1 圖像閾值化9.2.2 霍夫線變換 最后 1 前言 🔥 優質競賽項目系列,今天要分…

怎么運行/opencv/modules/imgproc/test下的test_cvtyuv.cpp

怎么運行/opencv/modules/imgproc/test下的test_cvtyuv.cpp 要運行test_cvtyuv.cpp,你需要按照以下步驟操作: 獲取OpenCV源代碼,編譯并安裝opencv:首先,確保你已經下載并安裝了OpenCV。如果沒有,請前往Open…

Leetcode630. 課程表 III

Every day a Leetcode 題目來源:630. 課程表 III 解法1:反悔貪心 經驗告訴我們,在準備期末考試的時候,先考的課程先準備。同理,lastDay 越早的課程,應當越早上完。但是,有的課程 duration 比…

2023年09月CCF-GESP編程能力等級認證Scratch圖形化編程四級真題解析

一、單選題(共15題,共30分) 第1題 人們所使用的手機上安裝的 App 通常指的是( )。 A:一款操作系統 B:一款應用軟件 C:一種通話設備 D:以上都不對 答案:B 第2題 下列流程圖的輸出結果是?( ) A:9 B:7 C:5 D:11 答案:A 第3題 默認小貓角色,執行下列程序…

IO,硬盤與文件

IO與計算機存儲空間 IO(輸入/輸出)是計算機領域中指的是數據在計算機與外部設備之間的傳輸過程。存儲通常指的是計算機中用來保存數據的介質或設備,硬盤是存儲設備的一種,通常是指硬盤驅動器(Hard Disk Drive&#xf…

文章解讀與仿真程序復現思路——電網技術EI\CSCD\北大核心《考慮時空相關性的流域水風光多能互補系統高維不確定性場景生成方法》

本專欄欄目提供文章與程序復現思路,具體已有的論文與論文源程序可翻閱本博主免費的專欄欄目《論文與完整程序》 論文與完整源程序_電網論文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 這篇文章的標題涵蓋了以下幾個關鍵方…

C語言編程大題

以下總結編程大題的常考題型 1,輸出 100-200 之間所有素數。 要求: (1)編寫一個判斷一個整數是否為素數的函數 void prime(int n),若是素數則輸出,否則不輸出 (2)主函數中調用 prime 函數,輸出 100-200 之間所有素數 說明:素數是指除了1和該數本身之外,不能被其它任何整…

【C++】用命名空間避免命名沖突

🌸博主主頁:釉色清風🌸文章專欄:C🌸今日語錄:如果神明還不幫你,說明他相信你。 🪷文章簡介:這篇文章是結合譚浩強老師的書以及自己的理解,同時加入了一些例子…

NOC2023軟件創意編程(學而思賽道)python小高組初賽真題

軟件創意編程 一、參賽范圍 1.參賽組別:小學低年級組(1-3 年級)、小學高年級組(4-6 年級)、初中組。 2.參賽人數:1 人。 3.指導教師:1 人(可空缺)。 4.每人限參加 1 個賽項。 組別確定:以地方教育行政主管部門(教委、教育廳、教育局) 認定的選手所屬學段為準。 二、…

MATLAB知識點:if條件判斷語句的嵌套

?講解視頻:可以在bilibili搜索《MATLAB教程新手入門篇——數學建模清風主講》。? MATLAB教程新手入門篇(數學建模清風主講,適合零基礎同學觀看)_嗶哩嗶哩_bilibili 節選自?第4章:MATLAB程序流程控制 我們通過一個…

基于springboot+vue的教師工作量管理系統

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

Java集合-Map接口

在Java中,Map接口表示鍵值對的集合,其中每個鍵都是唯一的,并且每個鍵映射到一個值。Map接口是集合框架中的一部分,位于java.util包中。它定義了一系列操作來管理鍵值對,例如添加鍵值對、刪除鍵值對、獲取鍵對應的值等。…

7.1.1 selenium介紹及安裝chromedriver

目錄 1. Selenium的用途 2. 安裝Selenium庫 3. 安裝chromedriver 1. 查看谷歌版本號?編輯 2. 找到最新版本及下載 3. 配置環境變量 4. 檢測是否配置成功 5. 用python初始化瀏覽器對象檢測: 6. 參考鏈接 1. Selenium的用途 在前面我們提到:在我…

Github項目推薦-LightMirrors

項目地址 https://github.com/NoCLin/LightMirrors 項目簡述 “LightMirrors是一個開源的緩存鏡像站服務,用于加速軟件包下載和鏡像拉取。目前支持DockerHub、PyPI、PyTorch、NPM等鏡像緩存服務。 當前項目仍處于早期階段。”–來自項目說明。 也就是說&#xff…

爆紅提醒:ESLint: Parsing error: Unexpected token. Did you mean `{‘>‘}` or `gt;`?

錯誤情況:> 會爆紅提示:ESLint: Parsing error: Unexpected token. Did you mean {>} or >? function().then((res) > {console.log(res.data); }解決方法:修改.eslintrc或者.eslintrc.js的配置 module.exports {// 其他配置..…

RocketMq——Consume相關源碼

摘要 RocketMQ只要有CommitLog文件就可以正常運行了,那為何還要維護ConsumeQueue文件呢? ConsumeQueue是消費隊列,引入它的目的是為了提高消費者的消費速度。畢竟RocketMQ是基于Topic主題訂閱模式的,消費者往往只關心自己訂閱的…

定制開發一款家政小程序,應知應會

引言 在這個快節奏的現代生活中,人們對高效、便捷的家政服務的需求日益增加。隨著社會結構的變化和職業生活的繁忙,許多家庭面臨著時間不足、精力不濟的挑戰。在這種情況下,家政服務成為解決問題的有效途徑。然而,傳統的家政服務…

Python——桌面攝像頭軟件(附源碼+打包)

目錄 一、前言 二、桌面攝像頭軟件 2.1、下載項目 2.2、功能介紹 三、打包工具(nuitka) 四、項目文件復制(我全部合到一個文件里面了) 五、結語 一、前言 看見b站的向軍大叔用electron制作了一個桌面攝像頭軟件 但是&#x…

PPT 批量刪除每頁相同位置的內容

方法: 選擇【視圖】,【宏】,設置宏的名稱,點創建將下列函數復制到宏中,在ppt中先選擇某個要刪除的對象,然后運行宏即可 函數內容如下 Sub Delete( ) Dim oSlide As Slide, oShape As Shape Dim myWidt…

如何在jupyter notebook 中下載第三方庫

在anconda 中找到: Anaconda Prompt 進入頁面后的樣式: 在黑色框中輸入: 下載第三方庫的命令 第三方庫: 三種輸入方式 標準保證正確 pip instsall 包名 -i 鏡像源地址 pip install pip 是 Python 包管理工具,…