【Unity入门计划】playground项目:2D飞船移动小游戏
目錄
跟學(xué)的Unity教程
我的Unity版本
1 導(dǎo)入playground項(xiàng)目資源
2 創(chuàng)建新場景
3?創(chuàng)建玩家飛船
3.1 調(diào)整大小位置
3.2 調(diào)整Game視圖的背景
3.3 Inspector -> 重命名&更改Tag
關(guān)于Unity的標(biāo)簽(Tag)
4 飛船移動(dòng)
5 添加障礙物和碰撞
5.1 添加障礙物
5.2 添加碰撞->障礙物
添加ModifyHealth腳本組件
添加2D剛體組件
5.3?添加碰撞 -> 飛船
6 添加減血效果
6.1 添加用戶交互界面
6.2 實(shí)現(xiàn)血量減少操作
7 添加背景圖
7.1 調(diào)整圖層順序
8 添加預(yù)制件
9 添加星星以獲得分?jǐn)?shù)
9.1 加入星星
9.2 加入獲取分?jǐn)?shù)組件
10 分組便于管理
跟學(xué)的Unity教程
【unity2022入門】整合Unity官方教程設(shè)計(jì)最佳學(xué)習(xí)路線,Unity精講入門系列,持續(xù)更新中...._嗶哩嗶哩_bilibili
我的Unity版本
2021.3.6f1c1
1 導(dǎo)入playground項(xiàng)目資源
進(jìn)入assetstoreUnity Asset Store - The Best Assets for Game Making
搜索Unity playground保存,再從Unity導(dǎo)入Assert即可。
palyground項(xiàng)目是官方給新手推薦的入門視頻,預(yù)設(shè)了一個(gè)封裝過的開發(fā)環(huán)境,讓我們很好的上手,來熟悉游戲概念和制作流程,比較好操作!
2 創(chuàng)建新場景
Assets?-> Scene 右鍵-> Create -> Scene,新建一個(gè)場景。
點(diǎn)一下名稱就可以重命名了,命名為PlaneAsteroid
雙擊這個(gè)Scene對象, 右側(cè)的Hierarchy窗口就會(huì)顯示出當(dāng)前的場景對象。
引擎會(huì)默認(rèn)同時(shí)創(chuàng)建:玩家攝像頭Main Camera和方向光Directional Light兩個(gè)對象。
3?創(chuàng)建玩家飛船
在這個(gè)“宇宙飛船”的小游戲中,玩家操作的是飛船,因此這個(gè)游戲的玩家對象就是飛船了!
我們就用已經(jīng)導(dǎo)入的playground項(xiàng)目里的資源就行。
Assets -> Images -> Spaceships,選擇喜歡的飛船,添加到場景中,添加到場景有兩種方式:
- 直接拖到Scene視圖中,這個(gè)方法可以直接實(shí)現(xiàn)對象在Scene中的定位
- 拖到Hierarchy窗口中,這個(gè)方法可以實(shí)現(xiàn)在加入的同時(shí)創(chuàng)建父子關(guān)系
3.1 調(diào)整大小位置
初始的飛船太大了,在Game視圖中點(diǎn)擊運(yùn)行的話,會(huì)是這樣
于是就要給它縮小一點(diǎn),?退出運(yùn)行狀態(tài)? -> 選中SpaceshipRed對象 -> R鍵,實(shí)現(xiàn)縮放。
同時(shí),如果想要精確的縮放,右側(cè)Inspector窗口 -> Transform層級(jí)下的Scale,輸入數(shù)值即可。
還可以打開Scale的鎖定按鈕,實(shí)現(xiàn)XYZ三向等比縮放,我這里選擇的是縮放到0.2.
可以再在Game視圖運(yùn)行查看,大小就舒服一點(diǎn)了。?
3.2 調(diào)整Game視圖的背景
教程里UP游戲視圖的背景色跟我不太一樣,我也想要調(diào)成純色的,找了一下發(fā)現(xiàn)是在玩家攝像機(jī)Main Camera的Inspector中更改。
Main Camera -> Inspector -> Camera -> Clear Flags&Background,可以看到初始是用的天空盒,這里改成Solid Color并把顏色設(shè)置成黑色。?
?
3.3 Inspector -> 重命名&更改Tag
?根據(jù)教程,在Inspector窗口更改飛船名字 -> ship,在Hierarchy窗口中名字也會(huì)自動(dòng)同步了。
關(guān)于Unity的標(biāo)簽(Tag)
unity官方:標(biāo)簽 - Unity 手冊
- 在Unity里,Tag是分配給一個(gè)或多個(gè)游戲?qū)ο蟮膮⒖荚~,起到標(biāo)識(shí)、區(qū)分的作用;
- 同一類的模型,可以設(shè)置成統(tǒng)一的標(biāo)簽;
- 查找物體就可以按標(biāo)簽進(jìn)行查找了;
其余的比如代碼怎么寫的,以后再說,這里先給我們的飛船物體給個(gè)Player的Tag。
4 飛船移動(dòng)
直接用playground項(xiàng)目里寫好的Move腳本就可以,點(diǎn)開可以在右側(cè)的Inspector查看代碼。
那么怎么把腳本賦給我們的飛船呢?有兩種方式:
- 外行的一種方式——把Move腳本拖拽到ship的Inspector窗口里;
- 比較建議的方式——從ship的Inspcetor窗口的Add Component添加
?添加之后,可以看到屬性里多了一個(gè) Rigidbody 2D 和一個(gè) Move With Arrows,對于2D剛體組件Rigidbody 2D我進(jìn)行了初步的學(xué)習(xí)總結(jié):Unity學(xué)習(xí)-2D剛體Rigidbody 2D
另一個(gè)Move With Arrows是編程創(chuàng)建的一個(gè)通過鍵盤控制游戲?qū)ο蟮囊粋€(gè)組件。
5 添加障礙物和碰撞
5.1 添加障礙物
Assets -> Images -> Asteroids,選擇小行星加入Scene中,并調(diào)整大小。??????
5.2 添加碰撞->障礙物
添加ModifyHealth腳本組件
playground項(xiàng)目中已經(jīng)給我們打包好了一個(gè)更改血量的腳本組件。
Assets -> Scripts -> Attributes -> ModifyHealthAttribute
通過Add Component給剛剛的障礙物添加這個(gè)腳本組件,加入時(shí)我們需要選擇:
這個(gè)組件需要添加一個(gè)2D碰撞體(Collider 2D)來實(shí)現(xiàn)碰撞,這里需要選擇碰撞物的類型,因?yàn)槲覀兊恼系K物——小行星是不規(guī)則的物體,這里可以選擇polygon。
關(guān)于2D碰撞體,可以看我另一篇介紹的博客:Unity學(xué)習(xí)-2D碰撞體Collider 2D_flashinggg的博客
可以看到,這個(gè)封裝好的組件包含了:
- Modify Health組件——實(shí)現(xiàn)飛機(jī)碰到它之后掉血的操作
?
-
Polygon Collider 2D 2D碰撞體——要想實(shí)現(xiàn)碰撞檢測,飛機(jī)和隕石都應(yīng)該是個(gè)碰撞體,因此需要給隕石也加上一個(gè)碰撞體組件,注意,這里不能是觸發(fā)器,因此需要去掉Is Trigger的復(fù)選框;
?
添加2D剛體組件
我們還想實(shí)現(xiàn)隕石被碰撞后有點(diǎn)小移動(dòng)的效果,因此還要給隕石一個(gè)Rigidbody 2D的2D剛體組件,并適當(dāng)?shù)恼{(diào)整剛體的參數(shù)值,嗎,模擬真實(shí)效果。
5.3?添加碰撞 -> 飛船
上面也提到了,想要實(shí)現(xiàn)碰撞必須二者都是碰撞體,因此還需要給飛船也添加一個(gè)Polygon Coliider 2D組件。
6 添加減血效果
6.1 添加用戶交互界面
playground項(xiàng)目也封裝好了這樣一個(gè)用戶交互界面的組件,搜索interface找到UserInterface組件拖入右側(cè)的Hierarchy窗口即可。?
?
6.2 實(shí)現(xiàn)血量減少操作
血量控制是以下兩個(gè)部分共同完成的
- 障礙物擁有的Modify Health——碰撞后改變血量
- 飛船自身血量,需要添加一個(gè)Health System組件以設(shè)定初始生命值
?
?
?以上都完成后,移動(dòng)飛船當(dāng)碰撞到障礙物隕石后,左上角就會(huì)減少生命值。
7 添加背景圖
依舊是用項(xiàng)目提供的圖,images -> Backgrounds,把Space拖入Hierarchy就行。
但是需要修改圖的尺寸以及背景圖、飛機(jī)、障礙物的圖層順序,避免出現(xiàn)遮擋。
7.1 調(diào)整圖層順序
圖層順序在每個(gè)對象的Sprite Renderer中修改,我的unity2021.3版本中可以直接修改layer的順序來調(diào)整:
- BG_Space -> 0
- ship&Asteroid2 -> 1?
就可以避免背景遮擋我們的飛船和障礙物了。
7.2 調(diào)整背景尺寸
這里尺寸設(shè)置為
?
最終效果:
8 添加預(yù)制件
由于游戲不只有一個(gè)障礙物,還會(huì)添加進(jìn)多個(gè)障礙物,但是障礙物的一系列屬性都應(yīng)該是一樣的,這時(shí)候就需要用到unity里的預(yù)制件,就是一個(gè)可重復(fù)使用的資源模板。
關(guān)于預(yù)制件的創(chuàng)建和使用:Unity學(xué)習(xí)-預(yù)制件 Prefab_flashinggg的博客
添加了幾個(gè)障礙物后,調(diào)整了一下大小和樣式,結(jié)果如圖:
9 添加星星以獲得分?jǐn)?shù)
這是游戲的最后一部分,需要加入可以”吃掉“且”吃掉“后獲得分?jǐn)?shù)的功能。
9.1 加入星星
Project窗口搜索star,并拖入Hierarchy窗口?
還需要修改Star的圖層順序,Order in Layer改成1即可。
9.2 加入獲取分?jǐn)?shù)組件
仍舊是Star的Add Component -> 搜索Collectable
加入后可以發(fā)現(xiàn),同步需加入一個(gè)碰撞體組件,選擇polygon就行。
注意,這里的Polygon Collider 2D的Is Trigger需要勾選上,這里就能達(dá)到“碰到星星并吃掉”的效果。
Collectable腳本中上述內(nèi)容就是實(shí)現(xiàn):飛機(jī)碰到星星后 -> score++ -> 星星消失,的效果,具體編寫之后會(huì)進(jìn)行C#的學(xué)習(xí)。
10 分組便于管理
操作部分就結(jié)束了!挺簡單的,最后可以把同類別的對象分組,便于管理。
結(jié)束了第一個(gè)Unity的練習(xí),繼續(xù)努力!
總結(jié)
以上是生活随笔為你收集整理的【Unity入门计划】playground项目:2D飞船移动小游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL SERVER Suspect(
- 下一篇: Unity物体 延着某个轴的方向 无法拖