主要內(nèi)容:
1.Unity3D引擎中的基礎(chǔ)設(shè)置。
2.2D場(chǎng)景的搭建,預(yù)制體制作。
3.2D動(dòng)畫的制作。
4.圖片圖集的有關(guān)知識(shí)。
5.碰撞器,觸發(fā)器,碰撞檢測(cè)與觸發(fā)檢測(cè)。
6.2D游戲渲染的一些知識(shí)。
7.敵人AI的編寫。
8.UGUI有關(guān)內(nèi)容,場(chǎng)景切換等。
所需資源包鏈接:https://pan.baidu.com/s/199wuwMiucKDQfZR54Skwxg?pwd=a6pa?
提取碼:a6pa
————————————————————開始———————————————————
一、新建項(xiàng)目、導(dǎo)入資源
新建個(gè)2D項(xiàng)目,將所有的圖片貼圖模式改為2D ANDUI
?二、場(chǎng)景搭建
1.設(shè)置主攝像機(jī):size(離屏幕位置)設(shè)置為8.5
2.Background設(shè)置為黑色游戲顯示
3.窗口設(shè)置為 5:4
4.圖集的加工:導(dǎo)入素材的Texture調(diào)整為Sprite(2D and UI),點(diǎn)擊apply。
5.Sprite Mode:Multiple(圖片的默認(rèn)屬性是single,這代表此圖片在這里視為一個(gè)單獨(dú)的精靈來處理)。
5.Sprite Mode:Multiple(圖片的默認(rèn)屬性是single,這代表此圖片在這里視為一個(gè)單獨(dú)的精靈來處理)
切割圖集(需要切割):點(diǎn)擊Sprite Editor——Slice——Automatic ——點(diǎn)擊Slice(調(diào)整大小,獲得尺寸)——Grid By Size(按照固定大小切割)——點(diǎn)擊Slice——自行切割找到合適尺寸,W28H28,將大小填入切割的尺寸即可。
三、游戲中預(yù)制體的制作,2D動(dòng)畫的制作
1.Play1拖入Hierarchy面板下
2.Unity開發(fā)以米為單位,將坦克Scale調(diào)整為3,3,3。改名為Player
3.在Project面板下,新建文件夾Prefabs存放預(yù)制體,拖入Player
4.再把Map下的石頭、墻、水、草等拖入Hierachy面板下
5.解決每個(gè)圖片都要調(diào)整大小問題:Sprite Render組件下的Sprite控制顯示的圖片,Ctrl+D復(fù)制幾個(gè)一樣的物體,再拖入圖片到Sprite下。
?
?
6.創(chuàng)建存放動(dòng)畫和存放動(dòng)畫控制器的文件夾Animation和AnimatorControllerBorn
2D動(dòng)畫:鼠標(biāo)單擊選擇第一張圖片按住Shift選擇最后一張圖片,拖入Hierarchy面板下,彈出窗口命名動(dòng)畫名字,命名為Born,Hierarchy面板下改名為Born。大小調(diào)整為3,3 ,3
?
7.創(chuàng)建存放動(dòng)畫和存放動(dòng)畫控制器的文件夾Animation和AnimatorControllerBorn
2D動(dòng)畫:鼠標(biāo)單擊選擇第一張圖片按住Shift選擇最后一張圖片,拖入Hierarchy面板下,彈出窗口命名動(dòng)畫名字,命名為Born,Hierarchy面板下改名為Born。大小調(diào)整為3,3 ,3。控制器改名為BornController,與動(dòng)畫分別拖入相應(yīng)文件夾下。
在預(yù)制體Prefabs文件夾下創(chuàng)建Map文件夾存放地圖和Effect特效文件夾
同理,創(chuàng)建爆炸特效Boom和無敵效果Born2,河流Water取消顯示攝像機(jī)Gizmos,叉掉Camera旁邊的攝像機(jī)
?四、控制玩家的移動(dòng)(Player腳本)
?1.創(chuàng)建新的文件夾Script,存放所有的腳本。
?2.創(chuàng)建(Player)腳本,添加在玩家坦克身上
3.控制游戲物體移動(dòng),在Update函數(shù)中后面因碰撞抖動(dòng)問題需要改在FixedUpdate函數(shù)中,
?
?四、控制玩家的移動(dòng)-不同方向移動(dòng)的圖片切換(Player腳本)
1.拿到Sprite組件,更改它的屬性值
2.拿到渲染器的引用:
?3.在Awake函數(shù)中(一開始就拿到),Start函數(shù)之前
4.拿到切換圖片的引用:并在Unity中分別把對(duì)應(yīng)圖片拖入
?
?五、碰撞器的添加,解決坦克旋轉(zhuǎn)、抖動(dòng)問題
1.發(fā)生碰撞的物體身上都應(yīng)該有碰撞器,其中一方(最好是運(yùn)動(dòng)的一方)身上要有剛體。
給Player游戲物體添加Box Collider 2D(2D游戲碰撞器)和剛體Rigibody 2D,將重力改為0
?2.Map里所有的物體添加Box Collider 2D(2D游戲碰撞器),草不用,因?yàn)椴菘梢酝ㄟ^
3.解決旋轉(zhuǎn)問題:選擇Player游戲物體,在Rigibody 2D下的Constraints勾選上z軸
?
4.解決抖動(dòng)問題:Unity內(nèi)置的生命周期函數(shù)(固定物理幀)
?
六、移動(dòng)優(yōu)先級(jí)的添加,2D渲染層級(jí)問題(Player腳本)
1.解決同時(shí)按兩個(gè)鍵,斜著走的問題。垂直優(yōu)先。先確定V
?
?2.然后把控制移動(dòng)的代碼封裝成一個(gè)方法,在FixedUpdate中調(diào)用
?
3.渲染的優(yōu)先級(jí):Order in Layer層級(jí)越大,越后渲染。Born、Grass設(shè)置為1
4.?添加子彈,層級(jí)設(shè)置為1,拖入Tank文件夾下做成預(yù)制體。爆炸特效層級(jí)也設(shè)置為1
?
?七、坦克的攻擊方法及子彈朝向(Player腳本)
1.拿到子彈預(yù)制體的引用,定義子彈旋轉(zhuǎn)角度
2.當(dāng)按下空格的時(shí)候?qū)嵗粋€(gè)子彈
、
3.彈朝向問題的解決,移動(dòng)方法的編寫。旋轉(zhuǎn)圖片——旋轉(zhuǎn)Z軸
八、子彈移動(dòng)腳本,攻擊CD的加入
1.創(chuàng)建子彈的腳本(BulletFly),在Update里面設(shè)置子彈移動(dòng)
?
?
2.設(shè)置子彈CD(Player腳本)
設(shè)置計(jì)時(shí)器 同時(shí)將子彈實(shí)例化的方法中加入使得每次射擊后時(shí)間歸零
?
3.給子彈添加觸發(fā)器,給子彈添加Rigidbody2D,重力設(shè)置為0。
?
?九、空氣墻的制作,標(biāo)簽的添加
1.找到不可通過及消滅的巖石,將其貼圖刪除即可成為空氣墻
2.給每個(gè)預(yù)制體添加對(duì)應(yīng)的Tag(標(biāo)簽)
3.在(BulletFly腳本)添加完善碰撞檢測(cè)
?
?十、玩家無敵方法與死亡方法的編寫(Player腳本)
1.聲明爆炸特效、保護(hù)特效、是否復(fù)活、無敵時(shí)間
2. 坦克死亡方法
?3. 坦克無敵方法
?4.將無敵特效放置為坦克的子物體,并將其渲染層級(jí)改為-1
?十一、區(qū)別玩家的子彈與敵人的子彈
?1.在(BulletFly腳本)中加入判斷語(yǔ)句,是否為玩家子彈
2.為玩家坦克生成子彈的時(shí)候添加一條語(yǔ)句(Player腳本)
十二、制作玩家出生特效(Born腳本)
1.新增Born腳本用于玩家的初始生成
2.在Unity中將玩家坦克預(yù)制體拖入
?十三、敵人出生特效(Born腳本)
用同樣的產(chǎn)生特效隨機(jī)生成兩種敵人,改寫B(tài)orn腳本代碼,并在Unity中拖入制作好的兩種敵人預(yù)制體
?十四、敵人AI的編寫(Enemy腳本)
1.新建(Enemy腳本)編寫敵人自動(dòng)攻擊和移動(dòng)的代碼,將Player腳本復(fù)制進(jìn)去,并進(jìn)行修改。
修改攻擊方法,不需要摁下空格鍵攻擊,會(huì)自動(dòng)攻擊
2.修改移動(dòng)方法?
?
?十五、在地圖上生成不同元素(MapCreation腳本)
1.新建個(gè)空物體命名“MapController”,賦予新腳本“MapCreation”.
2.使用數(shù)組存放所有元素,在Unity中拖放好
?
3. 寫一個(gè)實(shí)例化物體的方法(可以將實(shí)例化出的物體作為子物體放置在腳本所在物體下)
?4.找好老家的位置,空氣墻的位置,通過封裝好的實(shí)例化物體的方法進(jìn)行實(shí)例化
?5.在隨機(jī)產(chǎn)生墻、水、敵人、障礙、草的物體時(shí),需要采用數(shù)組來記錄已經(jīng)使用過的位置,防止一個(gè)位置上實(shí)例化兩個(gè)物體
6.寫一個(gè)隨機(jī)產(chǎn)生位置的方法
7.判斷位置列表中是否有與產(chǎn)生位置重復(fù)
?8.實(shí)例化游戲中的元素、玩家、敵人
十六、玩家重生、得分(PlayerController腳本)
?1.新建腳本“PlayerController”,實(shí)例化instance
?2.Ctrl+R+E可快速部署
?3.實(shí)例化單例
?4.聲明生命值、得分、是否死亡
?5.重生的方法(若生命值0返回開始界面)
?6.在Update中調(diào)用重生方法
?7.若玩家死亡在“Player腳本”中,找到死亡方法,添加調(diào)用isDead的屬性值
?
?8.若敵方死亡在“Enemy腳本”中,找到死亡方法,添加調(diào)用Score的屬性值
?十七、UI制作
1.將資源中的?作為5:4背景底色,將主攝像機(jī)的顏色調(diào)為灰色
2.游戲窗口比例設(shè)為16:10
3.使用Image、Text制作得分和生命值
4.(PlayerManager腳本)公開兩個(gè)文本屬性,在Unity中賦值
?5.在Update中讓文本隨得分和生命值變化
?6.在Unity中制作游戲失敗的圖片并賦值?
?7.在Update中顯示游戲失敗,并暫停運(yùn)行
?————————————————具體開發(fā)流程結(jié)束——————————————————
游戲內(nèi)圖文章來源:http://www.zghlxwxcb.cn/news/detail-458937.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-458937.html
到了這里,關(guān)于【經(jīng)典游戲】坦克大戰(zhàn) Unity2D項(xiàng)目實(shí)戰(zhàn)(保姆級(jí)教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!