Unity3D - 2D

2D游戲?qū)氲膱D片瀑焦,Texture Type會(huì)默認(rèn)變?yōu)?Sprite(2D and UI)剪菱,此時(shí)可以直接將其拖拽進(jìn)場(chǎng)景成為GameObject浪耘;也可創(chuàng)建一個(gè)空物體症汹,手動(dòng)添加Sprite Renderer組件。

Sprite 屬性

  • Sprite Mode:Single(默認(rèn))溉委。Multiple(包含多個(gè)精靈鹃唯,可分割或動(dòng)畫(huà))。
    注意瓣喊,2D紋理本身不是精靈坡慌,其下附屬的展開(kāi)內(nèi)容才是精靈。
  • Pixels Per Unit:Unity場(chǎng)景里每個(gè)格子對(duì)應(yīng)圖片中多少像素藻三。

Tilemap(瓦片地圖)

該功能依賴包管理器中安裝2D Tilemap Editor包洪橘。
將場(chǎng)景平面劃分為網(wǎng)格狀,并在網(wǎng)格上繪制內(nèi)容棵帽。

瓦片地圖
  1. 創(chuàng)建瓦片地圖 Hierarchy - Create - 2D Object - Tilemap - Rectangular
  2. 創(chuàng)建調(diào)色板 Window - 2D -Tile Palette(打開(kāi)調(diào)色板窗口) - Create New Palette
    將精靈/瓦片拖拽入調(diào)色板(一個(gè)調(diào)色板里可以容納多個(gè))熄求,資源管理器會(huì)自動(dòng)創(chuàng)建瓦片文件。
  3. 蘸取調(diào)色板中的格子逗概,即可在場(chǎng)景中刷涂弟晚。刷涂部分的內(nèi)容會(huì)自動(dòng)加入第一步創(chuàng)建的瓦片地圖。
拆分瓦片集

拆分后可以讓 2D Texture 下出現(xiàn)多個(gè) Sprite(制作動(dòng)畫(huà)也需要該操作)

  1. 選中一個(gè)Sprite - Sprite Mode - Multiple
  2. Sprite Editor - slice
    其中 Automatic 會(huì)根據(jù)透明像素自動(dòng)分割逾苫,也可以手動(dòng)在畫(huà)面中拖拽出綠框進(jìn)行分割
為 Tilemap 設(shè)置碰撞
  • 方法1:在需要存在碰撞的位置創(chuàng)建空物體卿城,并為其添加Collider組件
  • 方法2:為Tilemap 添加 Tilemap Collider 2D(瓦片碰撞)組件和 Composite Colloder 2D (復(fù)合碰撞體)組件
    前者會(huì)讓該Tilemap中所有Collider TypeSprite(默認(rèn)值)的瓦片都具有碰撞效果(對(duì)于不想碰撞的瓦片,可以選中其瓦片源文件铅搓,將Collider Type改為None
    后者會(huì)合并前者中的多處碰撞以減少優(yōu)化性能(因此會(huì)自動(dòng)額外添加剛體組件)瑟押。且添加后還需要勾選前者的Used by Composite選項(xiàng)才能生效。

精靈平鋪

2D物體-》Sprite Renderer組件-》Draw Mode

  • Simple:默認(rèn)值星掰,強(qiáng)行拉伸
  • Sliced:根據(jù)九宮格切片多望,中間部分拉升,四角不變
  • Tiled:根據(jù)九宮格切片氢烘,中間部分重復(fù)平鋪怀偷,四角不變
當(dāng)啟用 Sliced / Tiled 時(shí)

會(huì)多出Width、Height屬性播玖,此時(shí)應(yīng)使用 Rect Tool(快捷鍵T)而非 Scale Tool 進(jìn)行大小拖拽椎工。
九宮格切片可在Sprite Editor中拖動(dòng)綠線調(diào)整(默認(rèn)在四邊)。

Tile Mode:
  • Continuous:默認(rèn),精靈會(huì)均勻重復(fù)
  • Adaptive:重復(fù)部分僅在精靈的尺寸達(dá)到 Stretch Value 時(shí)才進(jìn)行重復(fù)

2D物體的渲染層級(jí)

  • Sprite Renderer 組件 - Additional Settings - Order in Layer
    數(shù)字越大渲染越晚(表現(xiàn)為覆蓋在最高層)

  • Edit - Project Settings - Graphic - Camera Settings - Tranparency Sort Mode
    可用于控制相同 layer 時(shí)渲染的先后順序
    若選為 Custom Axis 則按照 Tranparency Sort Axis 渲染晋渺。可實(shí)現(xiàn)隨著物體移動(dòng)脓斩,根據(jù)坐標(biāo)位置不同產(chǎn)生不同的優(yōu)先級(jí)
    可通過(guò)Sprite Renderer 組件 - Sprite Sort Point切換中心點(diǎn)或軸心點(diǎn)來(lái)進(jìn)行坐標(biāo)位置比較
    其中軸心點(diǎn)(Pivot)的位置默認(rèn)在中心點(diǎn)(Center)木西,可以在精靈的設(shè)置(Sprite Editor)中修改,拖拽藍(lán)色圓圈或直接設(shè)置均可随静。


動(dòng)畫(huà)

Unity動(dòng)畫(huà)有自己的狀態(tài)機(jī)八千,而非直接通過(guò)腳本控制。

1. 為游戲?qū)ο筇砑?Animator 動(dòng)畫(huà)組件

可將動(dòng)畫(huà)分配給場(chǎng)景中的游戲?qū)ο罅敲停壤习姹镜?code>Animation組件更方便恋捆。

2. Assets->右擊->Create->Animator Controller 創(chuàng)建動(dòng)畫(huà)控制器

可根據(jù)當(dāng)前游戲?qū)ο蟮臓顟B(tài)控制播放/切換對(duì)應(yīng)的動(dòng)畫(huà)(也稱為動(dòng)畫(huà)狀態(tài)機(jī))。

3. Window->Animation->Animation 打開(kāi)動(dòng)畫(huà)窗口

注意:后續(xù)操作需要在Hierarcy中選中游戲?qū)ο蠛笾乇粒僭趧?dòng)畫(huà)窗口中編輯沸停。
Preview也是點(diǎn)動(dòng)畫(huà)窗口中的時(shí)間點(diǎn),Scene里的對(duì)象發(fā)生改變

4. 選中帶有Animator組件并配置好Animator Controller的游戲?qū)ο笳炎浚趧?dòng)畫(huà)窗口左上角下拉框中創(chuàng)建/切換動(dòng)畫(huà).anim文件(也稱AnimationClip文件)

即一個(gè)Controller對(duì)應(yīng)多個(gè)AnimationClip

5. 操作時(shí)間軸

可以通過(guò)鼠標(biāo)框選選中時(shí)間軸中多個(gè)關(guān)鍵幀愤钾,然后拖動(dòng)以等比拉伸時(shí)間

  • 點(diǎn)擊Add Peoperty,可以選擇該物體已有組件的某個(gè)屬性候醒,并在時(shí)間軸上設(shè)置關(guān)鍵幀
  • 點(diǎn)擊錄制按鈕能颁,然后直接在對(duì)應(yīng)幀進(jìn)行游戲?qū)ο蟮男薷牟僮鳎⒆詣?dòng)記錄
  • 將資源中的精靈拖拽進(jìn)時(shí)間軸(本質(zhì)是改變了Sprite Renderer組件Sprite屬性)
6. Window->Animation->Animator 打開(kāi)動(dòng)畫(huà)控制器窗口

可以將.anim動(dòng)畫(huà)文件拖拽以添加進(jìn)動(dòng)畫(huà)控制器窗口
從Entry出發(fā)的為必播動(dòng)畫(huà)(default)倒淫,可通過(guò)右鍵設(shè)置伙菊。

  • Layers:動(dòng)畫(huà)層級(jí),用于處理多個(gè)動(dòng)畫(huà)同時(shí)生效(如邊跑邊射擊)時(shí)的優(yōu)先級(jí)
  • Parameters:用于控制多個(gè)動(dòng)畫(huà)狀態(tài)之間切換的變量

在不同節(jié)點(diǎn)之間通過(guò)連線(Make Transition)敌土,表示可切換關(guān)系镜硕。
可以通過(guò)代碼修改狀態(tài)機(jī)變量,當(dāng)連線的檢查器中Conditions設(shè)置的變量條件滿足時(shí)纯赎,就會(huì)切換到相應(yīng)的動(dòng)畫(huà):

private Animator animator;

animator = GetComponent<Animator>();
animator.SetInteger("變量名", -1);

////Trigger觸發(fā)器和布爾值不同谦疾,動(dòng)畫(huà)執(zhí)行完成后會(huì)自動(dòng)重置為false。也可以通過(guò)ResetTrigger手動(dòng)重置
animator.SetTrigger("變量名");
animator.ResetTrigger("變量名");
  • Has Exit Time:動(dòng)畫(huà)狀態(tài)滿足切換條件時(shí)犬金,是否保留之前動(dòng)畫(huà)一段時(shí)間
    勾選時(shí)念恍,Exit Time設(shè)置生效
  • Transition Duration:動(dòng)畫(huà)切換時(shí)的過(guò)渡時(shí)間。設(shè)置為0則直接切換晚顷。
混合樹(shù)(Blender Tree)

動(dòng)畫(huà)控制器中一種特殊的節(jié)點(diǎn)峰伙,可以按不同程度組合動(dòng)畫(huà)。
如:一個(gè)站立混合樹(shù)可以當(dāng)speed>0時(shí)進(jìn)入走路混合樹(shù)该默,再根據(jù)direction在走路狀態(tài)樹(shù)中切換為不同朝向的走路動(dòng)畫(huà)瞳氓。
在動(dòng)畫(huà)控制器窗口中,右擊->Create State->From New Blend Tree栓袖,雙擊新創(chuàng)建的混合樹(shù)節(jié)點(diǎn)進(jìn)行配置

  • Blend Type:決定有幾個(gè)參數(shù)控制動(dòng)畫(huà)切換

組合出一個(gè)坐標(biāo)系匣摘,并添加Motion(動(dòng)畫(huà))店诗,將觸發(fā)離紅點(diǎn)坐標(biāo)最近的動(dòng)畫(huà)


設(shè)置循環(huán)動(dòng)畫(huà)
  • 方法1:選中.anim文件(即AnimationClip文件),在其Inspector中勾選Loop Time音榜。則之后進(jìn)入該狀態(tài)后庞瘸,只要狀態(tài)不離開(kāi),就會(huì)反復(fù)播放
  • 方法2:在動(dòng)畫(huà)控制器窗口中赠叼,復(fù)制一個(gè)動(dòng)畫(huà)擦囊,使其互相指向



粒子系統(tǒng)

Hierarchy > Effects > Particle System
用于制作煙霧、火焰嘴办、爆炸瞬场、雨雪等特效
注意各模塊中帶下三角的屬性,都可以切換成固定值或區(qū)間隨機(jī)值等

用貼圖制作煙霧特效
  1. 設(shè)置煙霧貼圖
    Particle System 組件 > Texture Sheet Animation 模塊
    Mode:Sprites
    選擇煙霧的精靈涧郊。如有多個(gè)精靈隨機(jī)出現(xiàn)贯被,則點(diǎn)擊加號(hào)添加精靈,并切換 Frame Over Time 和 Start Frame 為 Random Between Two Constants 妆艘,數(shù)值為 0~n(即上述添加精靈數(shù)組的index)刃榨。

  2. 設(shè)置煙霧形狀
    Particle System 組件 > Shape
    Angle 設(shè)置發(fā)射角度

  3. 設(shè)置粒子行為
    Particle System 組件 > Particle System 主模塊
    Looping:重復(fù)播放
    Start Lifetime:粒子存活時(shí)間
    Start Speed:粒子速度
    Start Size:粒子大小
    Simulation Space:Local 則跟隨當(dāng)前物體。World 則已發(fā)出的粒子獨(dú)立運(yùn)動(dòng)双仍,不隨 Particle System 物體移動(dòng)枢希。

  4. 設(shè)置粒子漸變消失
    Particle System 組件 > Color Over Lifetime 模塊
    選中右上角的標(biāo)記,設(shè)置 Alpha 為 0


  5. 設(shè)置粒子漸變變小
    Particle System 組件 > Size Over Lifetime 模塊

  6. 設(shè)置粒子發(fā)射頻率
    Particle System 組件 > Emission 模塊

開(kāi)始/結(jié)束粒子發(fā)射
private ParticleSystem smokeEffect;

smokeEffect = GameObject.Find("Particle System").GetComponent<ParticleSystem>();

smokeEffect.Stop();//不再生成新的粒子

smokeEffect.Play();//繼續(xù)發(fā)射粒子

// Destroy(smokeEffect);//直接銷毀所有粒子
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末朱沃,一起剝皮案震驚了整個(gè)濱河市苞轿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逗物,老刑警劉巖搬卒,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異翎卓,居然都是意外死亡契邀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門失暴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)坯门,“玉大人,你說(shuō)我怎么就攤上這事逗扒」糯鳎” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵矩肩,是天一觀的道長(zhǎng)现恼。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么叉袍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任始锚,我火速辦了婚禮,結(jié)果婚禮上喳逛,老公的妹妹穿的比我還像新娘疼蛾。我一直安慰自己,他們只是感情好艺配,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著衍慎,像睡著了一般转唉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稳捆,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天赠法,我揣著相機(jī)與錄音,去河邊找鬼乔夯。 笑死砖织,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的末荐。 我是一名探鬼主播侧纯,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼甲脏!你這毒婦竟也來(lái)了眶熬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤块请,失蹤者是張志新(化名)和其女友劉穎娜氏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體墩新,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贸弥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了海渊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绵疲。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖臣疑,靈堂內(nèi)的尸體忽然破棺而出最岗,到底是詐尸還是另有隱情,我是刑警寧澤朝捆,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布般渡,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驯用。R本人自食惡果不足惜脸秽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝴乔。 院中可真熱鬧记餐,春花似錦、人聲如沸薇正。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挖腰。三九已至雕沿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猴仑,已是汗流浹背审轮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辽俗,地道東北人疾渣。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像崖飘,于是被迫代替她去往敵國(guó)和親榴捡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容