Unity3D+免費工具開發2D遊戲之二:製作關卡1的界面

原文地址:http://www.rocket5studios.com/tutorials/make-a-2d-game-with-unity3d-using-only-free-tools-part-2/


原版翻譯,轉載請註明出處:http://blog.csdn.net/ariel7321/article/details/7771638


第一節中我們介紹了一些工具和插件,並設置了下項目,本節將介紹如何創建關卡。


雖然在第一節中介紹了很多插件,但我們重點在Orthello上。


初始化項目


在我們開始製作關卡精靈前需要對項目設置做一些改變。


Build Settings:

  • File –> Build Settings…
  • 點擊Web Player,點擊switch platform。
  • 關閉Build Settings窗口。

Player Settings:

  • Edit –> Project Settings –> Player。
  • Per-Platform Settings下點擊網狀球的圖標。
  • Resolution and Presentation中將Screen Width改爲800,Screen Height改爲600.

Render Settings:

  • 因爲在2d遊戲中我們不用光照系統,所以我們在這調節下unity默認的環境光,使之更亮點。
  • Edit –> Render Settings…
  • 點擊 Ambient Light,然後將顏色改爲 (255, 255, 255, 255)。


初始化Orthello 2D


  • 在unity的項目視圖裏,進入 Orthello -> Objects,然後將OT prefab拖到Scene中或是Hierarchy中。(第一節做過了)
  • 點開OT對象,然後點擊View
  • 修改Pixel Perfect Resolution爲800*600.
  • 修改Custom Size爲10

此時,如果你點擊Main Camera,你會發現它被改爲正交投影了,而且大小被改爲10了。

此時你的項目看起來像下面的圖(注意,這裏我加入了一個Cube用來比較規模):


Download the project up to this point.


製作關卡精靈圖


好了,所有的初始化設置都OK了,現在到了深入進去的時候了。Lode Runner裏面的關卡都是由一些簡單的貼圖拼起來的:磚(可以被挖開的),混凝土(不可挖的),梯子和繩索。

  • 下載資源sprite.png,然後解壓。
  • 啓動TexturePacker,然後將sprites/level文件夾下的png文件都拖放到Sprites面板。
  • sprites/shoot文件夾下的png文件也都拖放到Sprites面板中。

Texture Settings / Layout:

  • Algorithm 設置成Basic。
  • 不勾選Trim。
  • 不勾選Enable Auto Alias。

Texture Settings / Output:

  • 保留Data格式爲cocos2d。
  • 在Data File中,點擊...,將輸出保存到項目的Assets下(我保存在Assets/SpriteAtlases),保存爲“level”。
  • TexturePacker 自動給文件加了後綴.plist,但是Unity需要.xml文件,因此我們將.plist改爲.xml。
  • Texture File路徑應該也被設置成和Data File一樣的了。
如果你按照我上面的步驟去做,TexturePacker的設置就如下圖所示:



如果你點擊Publish,然後切換到unity你就會在項目視圖裏看到SpriteAtlases 文件夾,在此文件夾下看到精靈貼圖和精靈數據文件。

我們需要在Unity裏做些修改讓它看起來正確。
  • 在項目視圖裏選擇level.png,在Inspector 中將Filter Mode改爲Point。
  • 點擊 Override for Web,將Format 設置成Truecolor ,然後點擊Apply。

製作關卡1


是時候用Orthello製作關卡了。

精靈容器:
  • 在unity的項目視圖,點開orthello:Orthello –> Objects –> Sprites –> SpriteAtlas,然後將 SpriteAtlas-Cocos2D拖到Hierarchy中。
  • 在Hierarchy窗口,點開OT->Containers,你會發現出現了一個新的Container,名字類似Container (id=-6840)“,這個Container將會包容我們關卡需要的所有的精靈,所有我們可以命名它爲“level”。
  • 將“level.png”拖放到“OTSprite Atlas Cocos 2D” 腳本的Texture位置。
  • 將“level.xml”拖放到“OTSprite Atlas Cocos 2D” 腳本的Atlas Data File 位置。

製作磚動畫


磚瓦在被銷燬和重建時都有動畫,所有我們先做動畫。

  • Animation 對象拖到Hierarchy中 Orthello –> Objects –> Sprites ,這將會在OT –> Animations下添加一個新的對象,名字類似 “Animation (id=-4320)“,將其重新命名爲“level anims”。
  • 點選剛創立的動畫對象,將設置修改爲下圖所示的。
  • Framesets下,將Size設置爲3.
  • 爲了填充Container區域,將 OT –> Containers 下的level拖放進去。


  • 然後將Orthello –> Objects –> Sprites 下的AnimatingSprite 拖放到Hierarchy中,這會給場景添加一個新的對象,名字類似“Animating Sprite (id=-23050)“。將名字改爲“brick“。
  • 將“level anims”拖放到“brick”的Animation位置。 Sprite Container位置會被自動填上“level”容器對象。如果沒有,你可以自己將“level”容器對象拖放到此位置。
此時你應該看到brick精靈在場景中,如果你播放,你會看到brick的動畫在一直播放。但我們不希望動畫在一開始就播放,所以將 Play On Start的勾選去掉。

注意:如果你在場景中看不到brick,請將brick的scale屬性改爲(1,1,1)。

給磚添加碰撞


我們需要給磚添加碰撞屬性,因爲我們需要讓主角知道他們何時站在地面上。

  • 選中brick,勾選Collidable ,這給brick自動添加一個Box Collider 和Rigidbody組件。
  • 我們需要給對象添加一個特定的標籤Tag,然後將其加入到層Layer中。 打開Edit –> Project Settings –> Tags,打開Tag Manager。
  • 然後點開最上面的Tags,然後在Element0 區域輸入“Ground”,然後回車。以後我們還需要更多的Tag,所以我們在這都一併加上,再加個“Ladder”和“Rope”。
  • 我們也需要一些層Layers,所以我們在User Layer 8位置輸入“Ground”,在User Layer 9位置輸入“Ladder”。
  • 點擊brick對象,然後在Tag的下拉菜單下選擇“Ground”。然後在Layer下拉菜單中也選擇“Ground”。

將它變爲Prefab


後面我們會給brick添加一些其他的屬性,所以我們將brick對象變爲prefab,這樣我們給它做的改變都會被應用到其他所有prefab的brick對象中。製作一個prefab的brick非常的簡單,後面會給你省很多時間的。

  • 在你的項目視圖中創建一個新的文件夾 “Prefabs“。
  • 將“brick”拖放到“Prefabs”文件夾中。

製作靜態的關卡精靈


接下來我們需要添加混凝土、梯子和繩索,我們將使用和上面一樣的容器來顯示他們,但是我們不用AnimatedSprite,而是用Sprite對象。

混凝土貼圖


  • 如果你的brick對象還在場景的正中間,請移走他。
  • Orthello –> Objects –> Sprites 下的Sprite 拖放到Hierarchy中,這會給場景添加一個新的對象,名字類似“Sprite (id=-3700)“。將名字改爲“concrete“。
  • 將OT –> Containers 下的level容器拖放到concrete的 Sprite Container位置處。
  • 此時精靈就在場景中了,但是看起來跟之前的brick一樣,這是因爲brick在level圖片的第一個位置。而混凝土圖片在第14位,所以將 “Frame Index”設置爲14. 這時看起來像一個固體混凝土了。
  • 勾選Collidable ,給它添加一個碰撞檢測器。
  • 在Tag的下拉菜單下選擇“Ground”。然後在Layer下拉菜單中也選擇“Ground”。
  • 將concrete拖到項目視圖的“Prefabs”文件夾下創建prefab對象。

梯子和繩索貼圖


添加梯子和繩索貼圖的步驟類似於混凝土。

  • 如果你的concrete對象還在場景的正中間,請移走他。
  • Orthello –> Objects –> Sprites 下的Sprite 拖放到Hierarchy中,這會給場景添加一個新的對象,名字類似“Sprite (id=-3700)“。將名字改爲“ladder“。
  • 將OT –> Containers 下的level容器拖放到concrete的 Sprite Container位置處。
  • 將 “Frame Index”設置爲15.
  • 複製一個ladder,然後將其命名爲rope
  • 將rope的 Frame Index改爲17.
  • 將ladder和rope拖到項目視圖的“Prefabs”文件夾下創建prefab對象。

製作底部的邊界


現在我們已經準備好所有的製作關卡用的精靈了。但是我們先製作地步的邊界區域。這底部的邊界區域可以給主角和敵人等物體站立的地方(如果磚牆被挖了的話)。

  • 創建一個cube:Object –> Create Other –> Cube,命名爲“border bottom“。
  • 將Transform的position改爲 X: 0, Y: -10.3, Z: 0。
  • 將Transform的scale改爲 X: 26, Y: 1, Z: 1。
  • border bottom拖到項目視圖的“Prefabs”文件夾下創建prefab對象。

此時我們應該可以在遊戲視圖裏看到只露出上面一小半截的cube,而且它的兩頭都沒有到達遊戲視圖的邊界。這個cube實在是太醜陋了,讓我們改變一下它的材質讓它看起來和brick搭配一點。

  • 在項目視圖中新建一個文件夾“Materials”。
  • 右擊Materials文件夾創建一個新的材質 Create –> Material,命名爲“border”。
  • 選中border材質,點擊“Main Color”旁邊的白色區域,彈出顏色選擇界面。
  • 將RGBA設置改爲R: 159, G: 2, B: 0, A: 255,然後關閉這個界面。
  • 將border材質拖放到border bottom對象上,此時border bottom對象應該具有和brick一樣的顏色了。
  • 選中border bottom,然後點擊Prefab旁邊的Apply,這樣就更新設置到剛剛創立的Prefab對象上了。

修改背景顏色


我們幾乎準備好去製作一個關卡了,但是我們首先將背景設置成黑色。

  • 選中Main Camera ,然後點擊Background旁邊的顏色選擇吸管。
  • 將RGBA設置成0,0,0,255,此時遊戲視圖中的背景應該是黑色了。

製作一個關卡


哇!我們做了好多步驟,不夠現在你已經擁有了製作一批關卡的所有東西了。是幾乎所有的東西,你還需要主角、敵人、可以撿起的小物體和一些其他的東西,這些我們在後續的講解中介紹。


此時,你可以通過不斷的複製brick、concrete、ladder和rope來製作一個關卡。但是在做這些之前,我有一些小技巧分享:


  • 在場景視圖裏,在Scene欄下面的下拉菜單裏,選擇Tex-Wire。
  • 你可以使用Vertex Snap很簡單的排列物體—在場景視圖裏,按住V鍵,然後移動鼠標到物體的四個角落周圍看看,你會看到在最近的一個頂點上出現一個方框來鎖定這個頂點,然後按住鼠標左鍵來拖到物體到你希望的位置,你會發現它會緊緊的而且恰當的貼在周圍的物體邊上。
  • 還記得之前做的border bottom物體,你可以以此爲基準線來搭建關卡。不用擔心Z軸,Orthello不允許你在z軸移動的。
  • 你可以一下子選中好幾個對象(shift+左擊來選擇,或拖動一片區域來選擇),然後複製,在用V鍵對齊。


下圖是我完成後的關卡:




結尾


我希望你喜歡這篇文章,然後能學到一些關於用unity製作2d遊戲的知識。在下一篇裏我們將會加入可移動的主角,可以讓他在整個關卡里移動。

如果你喜歡,請回復這篇博客,並關注我的 Twitter Facebook。你的支持會幫助這個教程的持續進行。這個博客是iDevBlogADay的一部分,這裏面收集了一系列程序員開發的經驗。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章