chp1.安裝unity | |||||
安裝各種版本 |
1.參考:unity的安裝教學影片: |
chp3.各種遊戲引擎比較 | |||||
目錄 | 1.較受歡迎的3D遊戲引擎:Unity,Unreal | 2.較受歡迎的2D遊戲引擎:Godot、Defold、Unity、Unity | |||
3.Unity | 4.Godot | 5.Defold | 6.Unity | ||
7.JS-based Game Engine (Pixi, Phaser) | 8.國外深度比較2個較好的遊戲引擎:Godot,Defold | 9.綜合評估要選用哪種遊戲引擎 | |||
1 |
1.3D遊戲較受歡迎的兩個引擎:Unity,Unreal (參考:2021年是自学游戏开发最好的年代!告訴你應該选Unity还是虚幻引擎?) (參考:不写代码做那样的游戏!分享使用Unity"蓝图"工具) (參考:我学编程了!真认真学了,可还是学不会……书看不懂、怎么办?) (參考:開發遊戲的建議) (1)Unity: ☎若要寫程式碼:c# ☎若要用可視化工具(編程):bolt(2021年收購bolt,開始預設支援) ☎若要用可視化工具(狀態機):playmaker(還要外掛插件) ☎優點:輸出3D,2D(行動app) ☎優點:使用界面直觀,容易上手 (2)Unreal: ☎若要寫程式碼:c++ ☎若要用可視化工具(編程):blueprint ☎優點:畫面能夠渲染地非常有質感,藝術氛圍 ☎缺點:C++寫程式不容易上手 ☎缺點:輸出2D(行動app)較弱 2.較受歡迎的2D遊戲引擎:Godot、Defold、Unity 和 Unity 參考文章: (1)Finding the Perfect 2D Game Engine (2)Godot vs Defold, Which One is Better, 3.Unity不適合開發:2D休閒類遊戲 原因: ☎雖然很強大,但對於一個休閒遊戲來說,這有點矯枉過正。 ☎個學習曲線較長 ☎複雜,對初學者來說令人困惑。 ☎還有其他引擎可以更簡單、更精簡地進行 2D。 ☎帶有閃屏的 Unity 遊戲因低質量遊戲而臭名昭著。 ☎C#在低端設備上的性能運行不佳(Web 構建在移動設備上) |
||||
2 |
2.較受歡迎的2D遊戲引擎:Godot、Defold、Unity 和 Unity 參考文章: (1)Finding the Perfect 2D Game Engine (2)Godot vs Defold, Which One is Better 2.2D 休閒遊戲的需求: ☎高性能引擎,構建尺寸盡可能小, ☎腳本程式語言更簡單易用。 ☎html5為主要平台,android次之。 ☎無需涉及編譯或本機移動工具。 ☎自由開源是首選。因此,沒有前期成本並且可以靈活地捐贈/貢獻給開發。 ☎支持Metal,以防需要在蘋果平台上發布。 3.2D 休閒遊戲的推薦: 經過一些初步研究,推薦是:Godot、Defold、Unity 和 Unity。 |
||||
3 |
3.Unity 參考文章: (1)Finding the Perfect 2D Game Engine (2)Godot vs Defold, Which One is Better 2.Corona SDK: (1)優點: ☎Unity 是 Corona SDK 的開源分支。 ☎它是一款出色且經過實戰測試的引擎, ☎易於使用且文檔非常好。 ☎Unity 使用 Lua。構建檔案大小很好(不大),對於 armv7 和 64 位,可能大約 6MB APK。我用它做了一個簡單的遊戲。即使在低端設備中,性能也沒有問題。 ☎社區雖小但很好。他們有論壇和 Discord。 (2)缺點: ☎沒有可視化編輯器(必須用簡單的純代碼撰寫一切物件,與動作事件) ☎缺點,雖然支持 html5 構建,但它仍然是測試版,所以有一些問題。 ☎Vulkan/Metal 版本也沒有準備好。 (3)請注意,幾個不錯的 Lua 引擎: ☎Unity ☎Gideros ☎Love2D。 它們都是開源的,可以與 Unity 相媲美。 Unity 更精緻,文檔更好。 |
||||
4 |
1.Godot 參考文章: (1)Finding the Perfect 2D Game Engine (2)Godot vs Defold, Which One is Better 2.Godot: (1)優點: ☎這個引擎最近很流行。它就像一個開源版本的 unity。 ☎很多文章說,Godot比 Unity 做 2D 更好。 ☎Godot 是完全開源的,擁有最寬鬆的許可。 ☎主要語言是GDScript(類似python), ☎但也支持C#、C++等。不同的語言有不同的成熟度和性能。 ☎功能豐富,同時支持 2D 和 3D。 ☎有畫面編輯器,小巧且快速。包含大量電池。具有內置動畫/骨骼、磁貼編輯器等。 ☎它也是可擴展的。 ☎教學文檔很好。還有很多文章和 YouTube 教程。 ☎構建檔案大小 APK 大約為 7.1-11.8MB(編譯時可以剝離模塊)。 ☎對於 html5,最小的(壓縮的)大約是 2.9MB。 ☎它的開發非常活躍,由於它的受歡迎程度,它的未來看起來很光明。 (2)缺點: ☎GDScript 是官方語言,它不是 Python,人們說它性能不佳。 ☎C# 支持看起來不錯,但會使構建大小更大。 |
||||
5 |
5.Defold 參考文章: (1)Finding the Perfect 2D Game Engine (2)Godot vs Defold, Which One is Better 2.Defold: (1)優點: ☎Defold 是一個基於 Lua 的遊戲引擎,帶有可視化編輯器。 ☎目前已經“開源”open source,這讓它更具吸引力。 ☎它是 King(超級流行的 Candy Crush Saga 背後的公司)的一部分,現在在 Defold 基金會下獨立。 ☎功能高度完善,並註意高性能/低引擎開銷。 ☎構建規模令人印象深刻。 ☎html5 構建低至 800kb 左右(gzipped)。 ☎apk 大小 ~1.7mb。 ☎文檔很好。它要求我們按照 defold 的方式做事(比如物件之間的傳遞參數)。 ☎為了成熟,Kings 在他們自己的一些流行遊戲中使用它(不過 Candy Crush Saga 使用不同的引擎)。因此,Defold 在這種規模上進行了實戰測試。 ☎關於支持,它有小而活躍且響應迅速的社區。 (2)缺點: |
||||
6 |
6.Unity 參考文章: (1)Finding the Perfect 2D Game Engine (2)Godot vs Defold, Which One is Better (3)Unity 極速入門 2.Unity: (1)優點: ☎使用界面非常類似Unity(兩者很像,用起來非常容易彼此熟悉上手) ☎而unity最大的問題個人覺得就是這個APK打包出來體積大的嚇人。 ☎但cocos HTML 的構建檔案大小是最好的(很小)。只有 ~155kb gzipped 因為它使用原生 js。 ☎unity:現在傾向用於3d遊戲和虛擬實境,這兩塊 ☎而cocos:終究還是華人世界2D遊戲的首選開發引擎(尤其它支援微信的小遊戲,也支援facebook的小遊戲) ☎非常適合 Facebook 即時遊戲或聊天應用程序的嵌入式遊戲。 ☎最小的 apk 大約是 6mb。如果同時包含 armv7 和 arm64bit 庫,則為 11MB。 ☎請注意,它會在移動設備上生成一個真正的本機應用程序。不僅僅是像 Apache Cordova 這樣的混合應用程序。 ☎它來自流行的 Cocos2d-x 引擎的製造商, ☎但使用 Visual IDE ala Unity,並使用 javascript。 ☎編輯器/IDE 是基於 Electron 的,沒有官方的 Linux 支持。 ☎IDE 不會嘗試做所有事情。它甚至沒有內置代碼編輯器。 ☎它可以很好地與外部代碼編輯器(如 VS Code)和流行的 3rd 方 2D 工具(如 tiled 和 Dragonbones/spine)集成。 ☎在中國和東南亞,它很受歡迎並被騰訊等大型出版商使用, ☎因此它看起來在這種規模上經受了考驗。 ☎對於社區來說,它有一個論壇和 Discord,看起來很小,但足夠活躍。 (2)缺點: ☎很難找到關於這個引擎的英文文章/資源(對外國人不利)。 ☎較少的英語教程,也許它只在華人世界流行(對外國人不利)。 ☎若要構建本機版本,需要設置所有本機工具堆棧並對其進行編譯。 ☎因此,這不是即時的一鍵式過程。 ☎此外,它是半開源的(編輯器部分是專有的,而引擎是開源的,基於 Cocos2D-X 的 fork。但是,它不能在沒有 IDE 的情況下使用) 3.Unity特色: ☎Cocos 引擎團隊敏銳地發現了:手遊頁遊化這一趨勢, ☎並做出了一個大膽的嘗試:開發類 Unity 工作流的一體化工具 Unity, =>Unity 的工作流借鑑了 Unity 等成熟引擎工具的設計方案,這使得用過 Unity 引擎的開發者可以迅速上手 Unity 而沒有不適感。 =>開發者可以在 Unity 和 Unity 兩者間隨性轉換,使用久了,你或許會發現,做 3D 選用 Unity,做 2D 選用 Unity,兩者猶如同一個產品 ☎它以頁遊主流指令碼: JavaScript 為開發語言, =>Unity 使用 JavaScript 作為指令碼語言,一則降低了開發難度和開發成本,同時也方便執行和除錯,輕鬆涵蓋了 H5 領域的產品開發 ☎能夠同時打包:三端產品【android, ios, html】, ☎還可幫開發者迅速過渡到當前流行的:【 H5、微信小遊戲、Facebook小遊戲】。 =>Facebook小遊戲 已授權 Cocos 為旗下 H5 遊戲平臺合作伙伴 ☎Unity 提供了一套以內容創作為核心的【所見即所得】的編輯工具, ☎擁有 All in One 一站式服務體系: =>整個遊戲產品開發過程中,遊戲創作團隊完全可以身處其中,通過其所建立的工作流對遊戲的資源管理、場景設計、介面佈局、精靈建立、邏輯控制、打包執行與釋出做全方位的把控 ☎元件化 =>Unity 基於元件化設計,功能模組易於擴充套件。 =>該模式使開發者不再拘束於編輯器本身這個容器,可以按需對編輯器進行外掛式擴充套件, =>用 HTML + JavaScript 等前端通用技術輕鬆擴充套件編輯器功能 4,Unity 的技術架構如下圖所示 5,以資料驅動工作流為核心的開發理念,整個工作流程如下圖所示 6,缺點: Unity 也有不足的地方,比如 3D 功能仍處於初級研發階段,未能形成生產力 7,國內的facebook小遊戲,只要是Unity開發的遊戲 |
||||
7 |
7.JS-based Game Engine (Pixi, Phaser, etc) 參考文章: (1)Finding the Perfect 2D Game Engine (2)Godot vs Defold, Which One is Better 2.JS-based Game Engine (Pixi, Phaser, etc): (1)優點: ☎它們最適用於 html5。 (2)缺點: ☎但對於移動版本,您必須將其包裝為像 Cordova 這樣的混合應用程序,因此運行速度慢,即時反應差 |
||||
8 |
8.國外深度比較2個較好的遊戲引擎:Godot,Defold 參考文章: (2)Godot vs Defold, Which One is Better 1.特色的比較: (1)Godot: ☎Godot 有更多的特點。發展非常迅速,似乎雄心勃勃。 ☎它不斷添加越來越多的功能。包括大量電池。 ☎但有時也會讓人不知所措和令人困惑。 ☎Godot IDE,您可以在其中管理和編輯資產、場景、代碼等 (2)Defold: ☎Defold 似乎更準系統,並專注於核心功能。例如,它沒有動畫時間線編輯器,因此您將依賴脊椎或龍骨等 3rd 方。 ☎Defold 有類似 Godot 的 IDE,但更簡單 2.支持3D的比較: (1)Godot: ☎Godot 內置了 3D。人們正在等待 Godot 4.0。 (2)Defold: ☎Defold 的 3D 支持有限。我認為開發人員仍在努力改進它。 3.背後資金的比較: (1)Godot: ☎這對軟體壽命至關重要。 ☎Godot 由社區資助。它是軟件自由保護協會的成員,也有企業贊助商。 ☎據我所知,這家大型科技公司還為某些功能的開發人員提供贊助,例如:Microsoft 提供 C# 支持,Mozilla 將 Godot 編輯器引入網絡。有趣的是,Godot 還通過 Epic MegaGrant 從 Epic Games 獲得了資金。 Epic 是 Unreal Engine 的製造商,這是一種商業(非直接)競爭遊戲引擎。 (2)Defold: ☎Defold 是 King, Company 的一部分,該公司因 Candy Crush Saga 而聞名。但現在它在自己的 Defold 基金會下獨立了。但是,King 仍然支持它作為企業贊助商。所以,資金看起來有點類似於Godot。 4.編輯器平台支持的比較: ☎相同的。兩者都適用於 Windows、Linux 和 macOS 5.編輯器大小的比較: (1)Godot: ☎Godot 有一個較小的可下載文件。但是當你想導出到平台時,你需要下載額外的包。 Defold 已經包含了這個,所以我認為大小是可比的。 ☎Godot 的編輯器感覺很輕巧。 ☎他們的 UI 不是原生的,因為 Godot Editor 實際上是 Godot Games,這實際上非常酷。 (2)Defold: ☎Defold 在 JVM 下運行,所以感覺有點重(慢)。 6.支持的輸出平台的比較: (1)Godot: ☎Godot:Linux、macOS、Windows、BSD、Android、iOS、BlackBerry 10、HTML5、UWP。沒有官方控制台支持,但可以通過第 3 方(Switch、PS4、Xbox)完成 (2)Defold: ☎Defold:Android、iOS、macOS、Linux、Windows、HTML5、Nintendo Switch。 7.輸出構建大小的比較: (1)Godot: ☎兩個引擎都允許您剝離不必要的部分以減少膨脹。 (2)Defold: ☎但這是 Defold 真正閃耀的地方,它可以產生令人印象深刻的小型構建尺寸。低至 1.6MB APK 大小和 734kb html5(gzipped) ☎Defold 小尺寸使其非常適合網頁遊戲,它更接近於像 Phaser 這樣的原生 JS 引擎。 8.程式語言的比較: (1)Godot: ☎Godot 以 GDScript 作為主要語言。語法類似於 Python,但它不是 Python。我們也可以使用其他語言進行編碼:C#、C++、Rust、Nim、JS 等。 (2)Defold: ☎Defold 使用 Lua。 9.人氣的比較: (1)Godot: ☎Godot 在忠實和狂熱的用戶群中更受歡迎。它具有良好的勢頭和品牌知名度。它被稱為統一的開源替代品 (2)Defold: ☎Defold 目前的用戶群較小,但他們的論壇友好且樂於助人。希望它的社區也在不斷發展。 10.結論: ☎Godot:適用於桌面遊戲或 3D 桌面遊戲。 ☎Defold:適用html5 和手機遊戲,在這些地方,尺寸和性能很重要。 |
||||
9 |
9.綜合評估要選用哪種遊戲引擎 參考文章: (1)Finding the Perfect 2D Game Engine (2)Godot vs Defold, Which One is Better 1.若在國外工作的角度:國外有人專門評估要選用哪種遊戲引擎: (1)3D遊戲:Unity,Unreal (2)2D休閒遊戲:Godot、Defold 2.若以在台灣就業的角度:來評估要選用哪個遊戲引擎: ☎方法:到104人力銀行網頁查詢 ☎查詢結果(2021/11/19): (1)Unreal:找到 20 個Unreal為主要標題的相關工作 (2)Unity:找到 88 個Unity為主要標題的相關工作 (3)Unity:找到 0 個Unity為主要標題的相關工作 (4)Corona SDK:找到 0 個Corona SDK為主要標題的相關工作 (5)Godot:找到 0 個Godot為主要標題的相關工作 (6)Defold:找到 0 個Defold為主要標題的相關工作 (7)Unity:找到 47 個Unity為主要標題的相關工作 (8)Construct:找到 0 個Construct為主要標題的相關工作 (9)Scratch:找到 4 個Scratch為主要標題的相關工作 (10)app Inventor :找到 2 個app Inventor 為主要標題的相關工作 ☎結論(以台灣的就業市場來看): (1)3D遊戲引擎:首選Unity,次選Unreal (2)2D休閒遊戲引擎(網頁遊戲引擎):首選Unity |
||||
chp4.實作Unity互動範例(1) | |||||
目錄 | 範例1.AddForce(單位向量)來施力讓物體移動 | 範例2.position移動到某個坐標,讓物體移動 | 範例3.translate相對位移量,讓物體移動 | ||
範例4.按鈕顯示目前分數,按鈕計算兩個數字相加 | 範例5.滑鼠點按Cube改顏色,有音效(按下onMouseDown放開onMouseUp物件都會變化顏色音效) | 範例6.滑鼠點按Cube改顏色,改透明度,縮小,有音效 | |||
範例7.GUI界面:InputField直接控制改變足球轉速 | 範例8.GUI界面:Slider直接控制改變足球轉速 | 範例9.彈鋼琴 | |||
範例10.用Input.GetAxis的鍵盤控制圓球移動力道(瞬間移動,上下左右wsad,跳space,e左轉r右轉,滑鼠驅動移動) | 範例11.用Input.GetKeyDown的鍵盤控制圓球移動(瞬間移動,上下左右wsad,跳space,e左轉r右轉) | ☎範例11-2.鍵盤控制物件的完美移動5步驟 (鍵盤放開就停止,按下可以連續移動/幀動畫,space跳有力學效果) |
|||
☎範例11-3.鍵盤控制物件進階設定:向上跳只能連續跳2次(6步驟) | 範例12.(虛幻物體)第三人稱視角,WSAD控制圓球移動(不向上跳),碰到獎品(觸發)得分20,100則過關 | 範例12-2.(真實物體)第三人稱視角,WSAD控制圓球移動(可向上跳),碰到獎品(碰撞)得分20,100則過關 | |||
範例13.(虛幻物體)第一人稱視角,WSAD控制圓球移動,碰到獎品得分20,100則過關 | 範例13-2.(真實物體)第一人稱視角:完美移動6步驟 | ||||
範例14.手機按鈕控制移動法:按1次移動2秒的緩動動畫,幀動畫(計時器慢慢移動,緩動動畫) | 範例15.使用unity官方的UI Menu來顯示隱藏不同物件 | ||||
範例16.用緩動幀動畫來控制直升機移動:上下、左移右移、左轉右轉 | 範例17.切換場景 | 範例18.影片的播放,暫停,停止 | |||
範例19.Game Over畫面方法1:切換場景法 | 範例20.Game Over畫面方法2:顯示圖片法(先隱藏的圖片,用public讀入後顯示) | 範例21.觸控事件第1種方法:在plane上觸控,發出射線,在觸碰點顯示圓圈 | |||
範例22.觸控事件第2種方法:在update上監測,是否有射線觸控,在觸碰點顯示圓圈(最常用) | 範例23.如何取得發生射線ray後,發生觸碰點的物件資料(名稱,位置) | 範例24.觸控移動,觸控取得寶物,100分過關 | |||
範例25.複合物件(小蜜蜂)觸控點按後向上移動的2種方法 | 範例26.設定怪物不斷生成產生(兩種計時器:Invoke,InvokeRepeating) | 範例27.從某個角色物件player,如何不斷發射子彈bullet,打到怪物monster則消失 | |||
範例25.直升機fire攻擊不斷來襲的敵機 | 範例26.製作角色跳舞 | 範例27.wsad控制角色上下左右移動,跳躍,蹲下 | |||
範例28.實作主角膠囊在導航網格內,自由觸控移動(塔防遊戲,top war game) | 範例29.實作主角unityChan在導航網格內,自由觸控移動+動作(idle,walk,jump) | 範例30.呼叫另外c#檔案的show()函數顯示分數score(1) | |||
範例31.呼叫另外c#檔案的show()函數顯示分數score(2) | 範例32.很多怪物攻擊主角,計算同一個score變數 | 範例33.RPG遊戲的狀態機:設定角色的5種狀態 | |||
範例34.實作enemy的四種狀態(預備idle,走路walk,攻擊attack,死亡die) | |||||
1 |
範例1:AddForce(單位向量)來施力讓物體移動: |
||||
2 |
範例2.position移動到某個坐標,讓物體移動: |
||||
3 |
範例3.translate相對位移量,讓物體移動: |
||||
4 |
範例4.按鈕顯示目前分數,按鈕計算兩個數字相加 |
||||
5 |
範例5.滑鼠點按Cube改顏色,有音效(按下onMouseDown放開onMouseUp物件都會變化顏色音效) |
||||
11 |
範例11.translate相對位移量,讓物體移動(計時器慢慢移動,幀動畫): |
||||
範例6.滑鼠點按Cube改顏色,改透明度,縮小,有音效 透明度為90(1~255) |
|||||
成果影片 |
範例7.GUI界面:InputField直接控制改變足球轉速 | |||||
成果影片 |
範例8.GUI界面:Slider直接控制改變足球轉速 | |||||
成果影片 |
範例9.彈鋼琴 | |||||
1.成果影片 |
範例10.用Input.GetAxis的鍵盤控制圓球移動力道(瞬間移動,上下左右wsad,跳space,e左轉r右轉,滑鼠驅動移動) | |||||
1. 成果影片 |
範例11.用Input.GetKeyDown的鍵盤控制圓球移動(瞬間移動,上下左右wsad,跳space,e左轉r右轉) | |||||
1.成果影片 |
範例11-2.鍵盤控制物件的完美移動5步驟 (鍵盤放開就停止,按下可以連續移動/幀動畫,space跳有力學效果) | |||||
1.成果影片 |
☎範例11-3.鍵盤控制物件進階設定:向上跳只能連續跳2次(6步驟) | |||||
1.成果影片 |
範例12.(虛幻物體)第三人稱視角,WSAD控制圓球移動(不向上跳),碰到獎品(觸發)得分20,100則過關 | |||||
1. 成果影片1 |
範例12-2.(真實物體)第三人稱視角,WSAD控制圓球移動(可向上跳),碰到獎品(碰撞)得分20,100則過關 | |||||
1.成果影片 |
範例13.(虛幻物體)第一人稱視角,WSAD控制圓球移動,碰到獎品得分20,100則過關 | |||||
1.成果影片 |
範例13-2.(真實物體)第一人稱視角:完美移動6步驟(WSAD控制圓球移動,碰到獎品得分20,100則過關) | |||||
1.成果影片 |
範例14.手機按鈕控制移動法:按1次移動2秒的緩動動畫,幀動畫(計時器慢慢移動,緩動動畫) | |||||
1.成果影片 |
範例15.使用unity官方的UI Menu來顯示隱藏不同物件 | |||||
1.成果影片 |
範例16.用緩動幀動畫來控制直升機移動:上下、左移右移、左轉右轉 | |||||
1.成果影片 |
範例17.切換場景 | |||||
1.成果影片 |
範例18.影片的播放,暫停,停止 | |||||
1. 成果影片 |
範例19:遊戲失敗產生Game Over畫面,方法1:切換場景 | |||||
1.成果影片 |
範例20.Game Over畫面方法2:顯示圖片法(先隱藏的圖片,用public讀入後顯示) | |||||
1. 成果影片 |
範例21.觸控事件第1種方法:在plane上觸控,發出射線,在觸碰點顯示圓圈(以淡黃色,透明100圓圈顯示) | |||||
1.成果影片 |
範例22.觸控事件第2種方法:在update上監測,是否有射線觸控,在觸碰點顯示圓圈(以淡黃色,透明100圓圈顯示) 方法2最常用 |
|||||
1.成果影片 |
範例23.如何取得發生射線ray後,發生觸碰點的物件資料(名稱,位置) |
|||||
1.成果影片 |
範例24.觸控移動,觸控取得寶物,100分過關 |
|||||
1.成果影片 |
範例25.複合物件(小蜜蜂)觸控點按後向上移動的2種方法 |
|||||
1.成果影片 |
範例24:用幀動畫來控制直升機移動:上下、左移右移、左轉右轉 | |||||
1.直升機向上移動的方法:採用幀動畫(frame animation) |
範例25.直升機fire攻擊不斷來襲的敵機 | |||||
成果影片,
|
範例26.設定怪物不斷生成產生(兩種計時器:Invoke,InvokeRepeating) |
|||||
1.成果影片 |
範例27.從某個角色物件player,如何不斷發射子彈bullet,打到怪物monster則消失 |
|||||
1.成果影片 |
範例28:實作主角膠囊在導航網格內,自由觸控移動(塔防遊戲,top war game) | |||||
☎參考影片:导航网格的使用 |
範例29:實作主角unityChan在導航網格內,自由觸控移動+動作(idle,walk,jump) | |||||
成果影片 |
【chp14.分數計算,記分系統】 | |||||
範例30:呼叫另外c#檔案的show()函數顯示分數score(方法1:public拖曵設定cs程式碼掛載的物件) | |||||
☎ 兩個cs程式碼檔案,都可以顯示分數score |
範例31:呼叫另外c#檔案的show()函數顯示分數score(方法2:GameObject.FindObjectOfType) | |||||
☎ 兩個cs程式碼檔案,都可以顯示分數score |
範例32:很多怪物攻擊主角,計算同一個score變數(方法3:GameObject.FindObjectOfType) | |||||
☎ 多個怪物的攻擊主角,都可以修改分數score |
【chp15.RPG的狀態機,主角攻擊怪物,怪物攻擊主角】 | |||||
範例33:狀態機:設定角色的5種狀態 | |||||
☎參考影片:RPG Enemy Set States 設置敵人的基本屬性和狀態 |
範例34:實作enemy的四種狀態(預備idle,走路walk,攻擊attack,死亡die) | |||||
1.問題點:自動導航navMesh,navMeshAgent的角色攻擊,遇到的問題: |
【chp6.程式碼建立節點物件,改變節點組件參數】 |
|||||
範例6-1:程式碼建立一個新的cube物件 | |||||
範例6-1:程式碼建立一個新的cylinder物件 |
範例6:程式碼修改一個cube物件,材質為紅色,透明度為90(1~255) | |||||
1.第1種做法(最好,推薦):設定顏色透明度四個參數(完全程式碼控制) |
範例6-3:點按一個cube物件,播放音效 | |||||
成果圖片 |
範例6-4:一個cube物件,再程式碼隱藏 | |||||
11.如何程式碼設定物件隱藏: |
範例6-5:先隱藏一個cube物件,再程式碼顯示 | |||||
|
6-7:程式碼建立的物件節點,如何自動產生某個組件,例如navMeshAgent(RequireComponent) | |||||
☎參考影片:RPG Enemy Set States 設置敵人的基本屬性和狀態 |
【chp7.滑鼠事件,觸控事件】 | |||||
7-1:觸控事件的程式碼有兩種寫法 | |||||
3.觸控程式碼有兩種寫法: |
7-2:如何做『ray射線』檢測(紅外線) | |||||
6.如何做『射線』檢測(紅外線) |
7-3.如何取得發生射線ray後,發生觸碰點的物件資料(名稱,位置) |
|||||
1.成果影片 |
範例7-4.觸控事件第2種方法:在update上監測,是否有射線觸控,在觸碰點顯示圓圈(以淡黃色,透明100圓圈顯示) 方法2最常用 |
|||||
1.成果影片 |
7-5:如何觸控射線,讓角色unityChan緩動有各種動作動畫(idle,walk,jump) | |||||
☎關鍵指令:設定animtor的參數status=2,agent1.GetComponent<Animator>().SetInteger("status", 2);
|
7-6:複合物件(小蜜蜂)如何觸控點按能夠有反應 | |||||
成果影片 |
【chp8.節點物件的運動方法1:移動,旋轉,縮放】 | |||||
範例8-1:如何程式碼設定一個cube的大小 | |||||
|
8-2:移動,有兩種位移法:(1)再移動dx,(2)移動到某坐標點 | |||||
1.移動,有兩種位移法:(1)再移動dx,(2)移動到某坐標點 |
8-3.移動,有兩種速度呈現法:(1)緩動,(2)瞬間移動到某坐標點 | |||||
8-3.移動,有兩種速度呈現法:(1)緩動,(2)瞬間移動到某坐標點 |
8-4.Vector有兩種:單位向量Vector3.left,new Vedtor3(2,2,0) | |||||
8-4.Vector有兩種:單位向量Vector3.left,new Vedtor3(2,2,0) |
8-5.unity的角度有5種,unity的旋轉方式有5種 | |||||
1.unity的角度有5種,unity的旋轉方式有5種 |
範例8-6:用幀動畫來控制直升機移動:上下、左移右移、左轉右轉 | |||||
1.直升機向上移動的方法:採用幀動畫(frame animation) |
8-7:AddForce(單位向量)來施力讓物體移動 | |||||
☎參考網頁:Addforce,RequireComponent |
範例8-8:複合物件(小蜜蜂)如何觸控點按後就能向上移動1秒 | |||||
成果影片 |
範例8-9:複合物件(小蜜蜂)如何觸控點按後就以鏡頭camera垂直方向forward遠離鏡頭1秒 | |||||
成果影片 |
範例8-15:計算兩個物件(agent1與圓圈)的距離 | |||||
13.計算兩個物件(agent1與圓圈)的距離: |
【chp9.節點物件的運動方法2:緩動移動(導航網格navMesh,Time.deltaTime)】 | |||||
範例9-1:要讓角色緩動(在一段時間內移動到目的地),有兩種方法:導航網格navMesh,Time.deltaTime | |||||
1.要讓角色緩動(在一段時間內移動到目的地),有兩種方法:Time.deltaTime法,導航網格法 |
9-2:導航網格navMesh | |||||
☎導航網格navMesh |
9-3:導航網格的特殊功能1:兩點之間跳躍(等高點的跳躍) | |||||
☎5.導航網格的特殊功能1:兩點之間跳躍(等高點的跳躍) |
9-4:導航網格的特殊功能2:兩點之間跳躍(高低點的跳躍) | |||||
☎6.導航網格的特殊功能2:兩點之間跳躍(高低點的跳躍) |
9-5:如何修正:導航網格轉成AR(Vuforia)的錯誤:角色會浮在空中 | |||||
☎如何修正:導航網格轉成AR(Vuforia)的錯誤:角色會浮在空中 |
範例9-6:實作主角膠囊在導航網格內,自由觸控移動 | |||||
☎參考影片:导航网格的使用 |
範例9-7:實作主角unityChan在導航網格內,自由觸控移動+動作(idle,walk,jump) | |||||
成果影片 |
9-8:unity的導航網格無法做到移動,如何修正 | |||||
☎注意:unity的官網說明,導航網格navMesh,是無法支援移動中的網格。 |
9-9:導航網格的主角,如何不動就idle,特定位置則jump,否則walk | |||||
(0)舉例:主角unitychan,觸碰link2就跳躍jump,導航就walk,到了目的地就idle |
範例9-10:實作主角unityChan的極限體能王過關遊戲 | |||||
成果影片,
成果影片+製作步驟 |
【chp10.射擊遊戲,不斷生成的prefab】 | |||||
10-1.如何設定怪物不斷生成產生 | |||||
10-1.如何設定怪物不斷生成產生 |
10-2.兩種計時器(Invoke,InvokeRepeating)與各種計時器指令 | |||||
☎計時器的各種指令用法: |
10-3.使用生成指令Instantiate(實例),在某物件A的位置,生成新物件B | |||||
☎生成指令Instantiate的用法: |
10-4.如何讓怪物monster亂數左右移動(蛇形走位) | |||||
☎如何讓怪物monster亂數左右移動(蛇形走位): |
10-5.從某個角色物件Cube-player,如何不斷發射子彈prefab(Sphere-bullet) | |||||
|
10-6.按鈕fire才開火(會飛的子彈),按鈕取消開火 | |||||
11.如何按鈕fire,才開火(會飛的子彈) |
範例10-7.直升機fire攻擊不斷來襲的敵機 | |||||
成果影片,
|
10-8.在dx=(-30, 30)之間產生隨機亂數,移動dx位移 | |||||
|
10-9.如何讓產生的生成物件Instantiate,在5秒後消失 | |||||
|
10-10.在原地不斷生成怪物 | |||||
1.從asset讀入怪物prefab |
【chp11.節點物件的碰撞事件1】 | |||||
11-1:碰撞事件有2種處理方式:Collision碰撞,Trigger觸發 | |||||
☎ 碰撞的觀念: |
11-2:Trigger觸發碰撞事件的設定方法(最常用的碰撞方式) | |||||
(1)Trigger觸發碰撞的特色: |
11-3:如何設定碰撞時的粒子動畫效果(例如,顯示爆炸prefab) | |||||
9.如何設定子彈打到怪物爆炸效果,顯示爆炸prefab |
11-4:被關卡撞到,如何顯示煙霧動畫 | |||||
[Tooltip("敵方被KO的煙霧動畫prefab")] |
11-5:為什麼設定碰撞的音效,沒有出現,如何解決(子彈打到怪物播放爆炸聲音) | |||||
(1)錯誤做法:若在bullet_prefab裡面加上audioSource組件,拖曵到clip,在程式碼裡面讓getComponent<AudioSource>().plaey |
11-6:開啟爆炸範圍,任何進入範圍內的怪物都會被爆炸 | |||||
1.顯示爆炸動畫/播放音效,打開爆炸box collider,3秒後關閉 |
【chp13.切換場景】 | |||||
13-1:切換場景的基本指令 | |||||
☎ 10.如何切換場景: |
範例13-2:遊戲失敗產生Game Over畫面,方法1:切換場景 | |||||
☎參考影片:Creating a Game Over Scene in Unity |
範例13-3:遊戲失敗產生Game Over畫面,方法2:顯示圖片(隱藏的圖片,用public讀入後顯示) | |||||
☎若用Image當作GameOver畫面,要replay時,不可以把image隱藏 |
範例13-4:遊戲失敗產生Game Over畫面,方法3:顯示圖片(隱藏圖片物件,用程式碼類別物件顯示) | |||||
☎參考影片:Create great GAME OVER screen in Unity UI |
9-2:導航網格navMesh | |||||
☎導航網格navMesh |
【chp14.分數計算,記分系統】 | |||||
範例14-1:呼叫另外c#檔案的show()函數顯示分數score(方法1:public拖曵設定cs程式碼掛載的物件) | |||||
☎ 兩個cs程式碼檔案,都可以顯示分數score |
範例14-2:呼叫另外c#檔案的show()函數顯示分數score(方法2:GameObject.FindObjectOfType) | |||||
☎ 兩個cs程式碼檔案,都可以顯示分數score |
範例14-3:很多怪物攻擊主角,計算同一個score變數(方法3:GameObject.FindObjectOfType) | |||||
☎ 多個怪物的攻擊主角,都可以修改分數score |
【chp15.RPG的狀態機,主角攻擊怪物,怪物攻擊主角】 | |||||
15-1:狀態機:設定角色的5種狀態 | |||||
☎參考影片:RPG Enemy Set States 設置敵人的基本屬性和狀態 |
15-2:如何判斷角色的狀態是預備態idle | |||||
(0)舉例:主角unitychan,觸碰link2就跳躍jump,導航就walk,到了目的地就idle |
15-3:如何判斷角色的狀態是攻擊態ATTACK | |||||
1.問題點:自動導航navMesh,navMeshAgent的角色攻擊,遇到的問題: |
範例15-4:實作enemy的四種狀態(預備idle,走路walk,攻擊attack,死亡die) | |||||
1.問題點:自動導航navMesh,navMeshAgent的角色攻擊,遇到的問題: |
15-5:如何怪物死亡後,不再繼續自動導航追踪主角(還要設定animator狀態,設定5秒後消失) | |||||
1.當怪物死亡後,除了要設定Animator的狀態外,還要取消追踪主角,否則死亡的怪物,還好繼續移動: |
範例15-6:兩種怪物攻擊主角,主角按炸彈來引爆炸彈 | |||||
1.顯示爆炸動畫/播放音效,打開爆炸box collider,3秒後關閉 |