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