Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

Unity在2019年釋出週期實現了他們的目標計劃——賦予2D藝術家和創作者一套完整的2D遊戲製作工具。Unity的2D軟體包包括角色骨骼動畫、反向運動學(IK)、平鋪檢視的平面設計、樣條曲線形狀和畫素藝術工具等多種功能。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

如今Unity的2D團隊已經優化了這些工作流並改進了圖形技術:通用渲染通道中的2D渲染器。

使用一個新的樣本專案來測試這些全新功能成為了展示這些改進後功能的最好方法,透過全新的圖形技術Unity讓2D視覺效果閃閃發光——Dragon Crashers正是這樣的一個樣本案例。

關於

Dragon Crashers

Dragon Crashers是一個在Unity 2020。2中製作的官方示例專案,展示了Unity的2D本地工具和圖形技術套件。Dragon Crashers已經成為當今移動平臺上流行的側滾式閒置RPG遊戲。

當遊戲中的英雄們自動攻擊敵人時,你可以透過觸控/點選不同的頭像來觸發特殊攻擊。Dragon Crashers目前已經在桌面、移動和網路平臺上完成了測試。

即將舉行的網路研討會

Dragon Crashers的概述網上研討會將於美國東部時間4月14日上午11:00(歐洲中部時間下午5:00)舉行。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

藝術家Jaroslaw創造的概念藝術和資產為構建場景提供了必要的指導。

讓我們

開始

首先需要確定的是,確保你已經安裝了Unity 2020。2或2020 LTS版本。之後,我們需要開始一個新的2D專案,從包管理器——我的資產入口,進入Dragon Crashers。你將看到一些專案設定的彈出訊息;我們選擇全部接受。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

專案匯入後,你會在選單欄中看到一個新選項,它提供了專案場景的快捷方式。選擇載入遊戲選單點選PLAY進入遊戲測試。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

我們建議在遊戲檢視中使用高畫質顯示設定,例如全高畫質(1920×1080)設定或4K UHD(3840×2160)。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

一個動畫人體模型

對應

六個角色

英雄和敵人的隊伍是多樣化的,可以使用不同的裝備、配件和變化來進行裝飾。然而,它們都是兩足動物,體型相似。

為了避免用他們各自每個動畫的2D反向運動學約束,我們建立了一個人體模型。動畫師可以使用人體模型進行動畫製作,而角色角色設計師則可以使用人體模型為角色創造獨特的面板和配件。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

人體模型預製件用於為每個角色建立預設變體。這些變體的唯一區別是sprite庫資源,在這裡我們可以交換兩足動物角色的視覺外觀。

所有角色的sprite庫資源都有相同的類別和標籤來定義主體部分及其變體。例如,騎士和骷髏敵人都有一個名為“口型”的類別,在動畫中使用的sprite變體被標記為“張開口型”、“露出牙齒”和“正常口型”。

要將動畫應用到所有角色,需要確保每個角色的視覺資源或PSB都有類似的裝備。換句話說,這些裝備必須以相同方式命名並附著到身體的相同類別和標籤的部分。為了節省時間,可以複製人體模型的骨骼(或參考角色骨骼),並將其貼上到不同的角色中。此選項在sprite編輯器的蒙皮編輯器中可用。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

要從另一個角色複製並貼上骨骼資訊,請確保sprite的類別和骨骼名稱匹配。同時為了與新的子畫面配合良好,你可能還需要調整幾何圖形。

預設包括使角色更生動的特徵,如反向運動學、法線和遮罩貼圖等,以改善在2D燈光環境中的整合性。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

龍有著不同的骨骼結構,因為它在解剖學上不同於兩足動物角色。動畫也不會被重複使用。

合成場景、

sprite

平鋪圖

人物外形

在原型製作過程中,沒有必要那麼早就把你的關卡設計固定下來。Unity中包含的世界構建2D工具讓你能夠輕鬆有趣地設計關卡,然後再輕鬆地在其上進行迭代。平鋪貼圖編輯器和Sprite Shape有助於自動化任務,例如設定碰撞器以符合物件或地形形狀,而場景檢視將會使遊戲更加精彩和美觀。

最重要的方面是在平鋪調色盤中準備好所有的“畫筆”,它包含可重複的平鋪、動畫平鋪、等軸或六邊形平鋪等功能,甚至是用一個渲染器(平鋪圖渲染器)高效渲染遊戲物件。對於網格中的所有元素,請參考地面和牆面平鋪調色盤。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

這裡的地面是白色的,而在遊戲中看起來不是白色的,這是由於我們將2D空氣與燈光新增到了環境中。

另一個經常被忽視的在關卡設計中有用的特性是sprite繪製模式。該模式用於背景層的平鋪sprite,可以用一個sprite覆蓋一個大的場景區域,以建立一個不錯的視差效果。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

圖中的四層背景是簡單可重複的sprite。

平鋪圖網格可能不是向專案中新增更多有機外觀的物件或基於樣條線的元素的最實用的解決方案。因此,我們推薦一個基於樣條的工具,比如2D Sprite形狀,它很像一個向量繪圖軟體。可在背景道具中使用或者作為遊戲的一部分而存在。Sprite Shape渲染器能幫助你高效地渲染附著在形狀的樣條線或邊框上的許多sprites。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

預製的橋和礦車軌道還有一些例子說明了Sprite形狀的邊界不是一條簡單的線,而是代表更復雜的元素——在本例中是一座橋和一條鐵軌。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

Sprite形狀用於裝飾元素,如鐵軌,甚至前景元素,如木材結構等。

2D著色器,法線貼圖和動畫道具

使用2D渲染器,使用sprite照明著色器獲得高階照明效果。透過給你的sprite配備二級紋理來充分展示這些效果。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

法線和遮罩貼圖是原始角色資源(PSB)的副本,可以在藝術創作工具中繪製。

法線貼圖可以在sprite編輯器中新增。這些RGB影象代表畫素所面對的XYZ方向,向2D光源發出訊號,最終向我們展示光源將如何對他們產生影響。2D渲染器資料資產也可以利用遮罩貼圖(在專案中的RenderData_2D。asset),它是“燈光混合樣式”功能的一部分。“菲涅爾”的燈光混合風格可以用於突出人物和sprite周圍的邊緣燈光。例如,要實現菲涅爾效果,請選擇使用遮罩貼圖中的R通道資訊。在這個特定的專案中,我們只有一種燈光混合風格,所以三個通道——R、G、B——看起來是一樣的(黑色和白色)。這使得建立遮罩貼圖的過程更加方便。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

藝術家Jaroslaw同時製作法線貼圖和遮罩貼圖

著色器圖形經常用於演示動畫道具,而其本身不會對CPU造成負擔。你可以觀察到風推動蜘蛛網,發光的晶體,以及熔岩流動的動畫,它利用一個流動貼圖紋理來控制主紋理的UV座標的方向。流動紋理使用紅色和綠色來指示每個幀中畫素遵循的XY方向。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

手繪的流動圖賦予了熔岩流粘性和卡通效果,這與專案的藝術方向相匹配。

在同一龍戰場景中,還有另一種著色器動畫技術,我們稱之為“動畫阿爾法剪輯”,它透過單個紋理建立平滑動畫。這是透過基於畫素的alpha值在每一幀中顯示特定範圍的畫素來實現的。視覺效果如熔岩飛濺或點選動畫等都是用這種技術和著色器圖形來完成製作的。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

該粒子的平滑動畫是由一個單獨的紋理和應用著色器圖形的動畫阿爾法剪輯技術製成的。

用2D燈

給場景著色

演示中的藝術風格是在考慮到2D燈及其多種可能性的情況下創造的。如大家所見,手工法線貼圖和遮罩貼圖對於sprites的增強是顯而易見的。有些sprite,像平鋪地板貼圖,是灰階的;這意味著它們是使用平鋪貼圖渲染器中的“顏色”選項結合環境中的發光區域進行著色的。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

重要的是要考慮Unity的2D圖形的可能性,我們可以最大限度地利用所有可用的選項。

實時2D燈讓你在Unity編輯器中的最後一個遊戲場景中花費更多的時間。你可以直接觀察畫面的結果,同時用燈光和物體組成你的理想場景,或者甚至能夠邊走邊玩,讓你更好地為你的遊戲建立出想要的情緒和氛圍。

此外,你還可以透過製作元素動畫來增加沉浸感。例如從預設中選擇掛起燈籠展示瞭如何在一個動畫物體上附加一盞燈,或者給女巫角色一根帶有sprite光粒子的棍子

在專案中使用2D光源的另一個好處是能夠重用元素。環境和道具看起來會有很大的不同,這取決於光照條件,這允許你用相同的sprite重建許多不同的層次。

遊戲架構

為了建立、架構、管理和迭代遊戲,Unity的演示專案使用了可編寫指令碼的物件和預製構件。

所有七個角色,不管是英雄還是反派,都是從基本單位預設繼承了他們的核心結構,並使用相同的行為程式碼。為了區分字元之間的值,Unity對基於單位的值的不同“塊”使用了可指令碼化物件。硬編碼值讓非程式設計師很難平衡遊戲,導致遊戲玩法僵化,所以Unity在可指令碼化物件中設定了“攻擊傷害量”、“能力冷卻時間(秒)”和“單位生命值”等單位值;任何參與專案的人都可以快速調整。這些值的變化由遊戲程式碼動態處理。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

每個單元預設都有一個核心的“單元控制器”指令碼,作為單元的“大腦”,它負責處理內部預設指令碼引用和行為排序。例如,當龍受到攻擊時,“單位控制器”會執行相關的行為事件,例如轉換為退縮動畫、播放吼聲效果和減少龍的生命值。

例如,生命值行為單元只處理邏輯,包括設定和刪除單元的生命值,以及報告重要的事件回撥,如“生命值已更改”或“生命值為零”等。而“Unity控制器”會根據遊戲過程中發生的場景和動作向生命值行為單元傳送值。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

在某些情況下,如果發生特定事件,裝置外部的系統需要更新。

例如:當女巫受到攻擊的傷害,並且“生命值行為單元”執行事件“生命值改變(內部生命值)”時,外部看到的“生命值行為單元UI”則可以根據該值更新女巫的生命值欄。

使用代理功能允許我們隔離和測試區域,而不依賴於其他系統。比如;在一個單獨的場景中測試彈出式傷害顯示數字系統的效能,而不需要模擬遊戲戰鬥。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

時間線和訊號

Unity的時間線特性用於兩個領域:線性過場動畫和每個單位的能力序列。

線性過場發生在戰鬥的開始和結束。它們處理各種區域的排序,例如相機轉換,角色動畫,音訊剪輯,粒子效果,UI動畫等。每個軌跡都會繫結到相關的場景例項。

時間線訊號嵌入在介紹的末尾,以便在過場動畫結束時呼叫Unity事件。這是遊戲開始戰鬥的邏輯的“訊號”。

時間線被用來為每個單元建立預設嵌入能力序列。這使得每個單位都有自己的特殊能力,這些能力與他們的角色相關聯;類似於MOBA遊戲中的角色能力。

每個單位包含兩個能力時間線;一個“基本”自動攻擊和一個“特殊”手動攻擊。“能力行為單元”指令碼根據當前播放的能力、能力序列佇列和開始/停止能力冷卻時間(取決於高階遊戲邏輯,如開場過場動畫是否正在播放,或者一個單元是否已經死亡)來處理兩個能力時間線的邏輯。

能力時間線軌道繫結在單位預設的本地系統中,包括角色的攻擊動畫和粒子系統的VFX動畫。這使得程式設計師和藝術家們都可以單獨使用預設編輯模式對遊戲中的每一個預設單位進行修改。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

時間線訊號通常用於當一種能力對一個單位目標的生命值造成傷害時。

比如騎士揮劍時,我們希望劍一到了動畫中的臨界點就施加傷害,而不是揮劍的開始或結束就會造成傷害。

隨著動畫和VFX在開發過程中的迭代,藝術家們可以以非常快速的工作流程將“能力使用”訊號重新定位到序列的新的期望點,而不需要依賴程式設計師來更改程式碼中的任何值。

這也允許我們在連續攻擊中新增多個“能力使用”訊號,例如龍向英雄們噴火的時候。

Unity新增新樣本專案,以展示全新的工作流和圖形渲染功能

總結

Unity的2D遊戲創作功能在全新版本公佈後得到了全面的提升,透過將Dragon Crashers加入Unity2D遊戲製作工具的樣板案例,Unity向其使用者展示瞭如何使用全新的圖形渲染通道和時間線工具打造出具有流暢逼真動畫特效和沉浸式玩法的2D橫板闖關遊戲。

全新的圖形渲染通道讓遊戲角色更加飽滿,反向運動學功能讓角色的動作更加真實,而時間線工具更是提升了玩家的遊戲沉浸感,而Unity本身的功能整合也使得創作者們的工作流程大大簡化,避免了重複的操作步驟,節省了寶貴的遊戲開發和迭代時間。

對於2D遊戲創作充滿熱情的創作者們現在可以下載Unity全新版本來感受與之前截然不同的2D遊戲創作體驗。