iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Software Development

初心者限定!設計師帶你學 Unity 3D 遊戲程式設計系列 第 12

Day12 / Unity C# 語法練習開始!躲避子彈小遊戲 (一) 玩家控制

  • 分享至 

  • xImage
  •  

Day12

Array( 陣列 )

✦ 使用方式

資料型態 [ ] 陣列名稱new 資料型態 [ ] { 變數1, 變數2, 變數3 }
◌ 陣列可用於儲存 相同類型 的 多個變數 。
◌ 索引值由 0 開始計算,因此 陣列名稱[0] = 變數1
◌ 使用 陣列名稱.Length 可以得出陣列長度,知道此陣列中儲存多少變數。
◌ 陣列長度是固定的,無法隨意更改大小。

01

示意圖以 int[] numberArr = new int[] { 1, 2, 3 } 為例

02

Console 介面印出上圖程式碼的結果

List

✦ 使用方式

List < 資料型態 > List名稱 = new List < 資料型態 > ()
◌ List 與陣列皆是用於儲存 相同類型 的 多個變數 。
◌ List 可以任意調整長度,並透過 List名稱.Add(變數) 的方式自行增加變數數量。
◌ 索引值由 0 開始計算,因此 List名稱[0] = 變數1
◌ 使用 List名稱.Count 可以得出 List 長度,知道其中儲存多少變數。

03

示意圖以 List<GameObject> objectList = new List<GameObject>() 為例

04

Console 介面印出上圖程式碼的結果

📝 古古的課程補充:
foreach 可以針對一連串資料(陣列或集合),逐一查看程式碼區塊一次。
寫法: foreach ( 資料型態 自定義之變數名稱 in List名稱 )

躲避子彈小遊戲

STEP 1

建立一個角色與遊戲空間


新增一個 Cube 並 沿 Y 軸縮小,作為地板 再新增 四個 Cube 分別作為四邊的牆壁

新增一個 Capsule 並 重新命名為 Player,作為玩家

05

💡古古的小提醒:
可以稍微降低一點環境光的強度,才不會看起來太過曝喔!

STEP 2

新增一個名為 GameManager 的腳本


對 Assets 資料夾 點擊右鍵 選擇 Create 點選 Folder 將資料夾命名為 Script

對 Script 資料夾 點擊右鍵 選擇 Create 點選 C# Script 命名為 GameManager

06

STEP 3

新增一個名為 GameManager 的空物件,並加入剛建立好的腳本


於 Hierarchy 介面中 點擊右鍵 選擇 Create Empty 命名為 GameManager

將剛建立好的 GameManager 腳本拖曳至此物件當中

07
08

STEP 4

開啟 GameManager 腳本,並進行資料綁定


開啟 GameManager 腳本 輸入 public GameObject player; 並存檔

回到 Unity 視窗中,查看 GameManager 物件中的 GameManager 腳本處,

應增加了一個名為 Player 的欄位 將 Player 物件拖曳至此欄位中,即完成資料綁定

09
10

STEP 5

控制角色進行前後左右的移動


開啟 GameManager 腳本 在 Update 處輸入以下程式碼

float posX = player.transform.position.x;
float posY = player.transform.position.y;
float posZ = player.transform.position.z;

if( Input.GetKey( KeyCode.UpArrow ) )
{
	player.transform.position = new Vector3 (posX, posY, posZ + 0.5f);
}

if( Input.GetKey( KeyCode.DownArrow ) )
{
	player.transform.position = new Vector3 (posX, posY, posZ - 0.5f);
}

if( Input.GetKey( KeyCode.LeftArrow ) )
{
	player.transform.position = new Vector3 (posX - 0.5f, posY, posZ);
}

if( Input.GetKey( KeyCode.RightArrow ) )
{
	player.transform.position = new Vector3 (posX + 0.5f, posY, posZ);
}

11

STEP 6

調整 Main Camera 視角


將 Main Camera 拖曳至 Player 物件上,作為 Player 的子物件,使其能與玩家同步移動

調整 Main Camera 的位置與角度至第三人稱俯瞰視角

12

💡古古的小提醒:
將 Main Camera 設定為 Player 的子物件後,調整其 Position 數值為( 0, 0, 0 ),就可以使 Main Camera 的位置與 Player 的位置重合。

STEP 7

調整角色的移動速度


開啟 GameManager 腳本 輸入 public float speed = 1f;

將 Update 程式碼區塊中原先控制移動數值的 0.5f 改為 speed,並存檔

回到 Unity 視窗中,查看 GameManager 物件中的 GameManager 腳本處,

應增加了一個名為 Speed 的欄位 點擊播放鍵,並 修改 Speed 欄位數值 至適當大小

結束播放,並將腳本中的 speed 數值 與 GameManager 物件中 Speed 的欄位數值

調整成先前測試好的數值大小

13

14

點擊播放鍵後再調整 Speed 的數值,會更方便進行測試與修正!

15
16

💡古古的小提醒:
點擊播放鍵執行遊戲後,在介面中所做的任何修改,都會在結束播放後回歸原狀。


上一篇
Day11 / Unity 快速補給!C# 程式語言基礎
下一篇
Day13 / Unity C# 語法練習開始!躲避子彈小遊戲 (二) 靈活的子彈攻擊
系列文
初心者限定!設計師帶你學 Unity 3D 遊戲程式設計31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言