今天是我第一次學(xué)習(xí) Unity3D产舞,做了個(gè)第一人稱射擊游戲P扌怠?颊ァ素标!沒(méi)有 C# 基礎(chǔ)括蝠,沒(méi)有 javascript 基礎(chǔ)脐帝,除了一本「Unity 3.x Game Development Essentials」之外沒(méi)有用到任何其他資源软能。你也可以俗扇,第一人稱射擊游戲饰潜?十幾分鐘的事初坠。
聽(tīng)起來(lái)很高大上嗎?無(wú)圖無(wú)真相:
游戲開(kāi)始彭雾,有一堵墻:
一輪射擊之后碟刺,墻倒了:
開(kāi)始吧:
第一步,生成一個(gè) Project薯酝,不需要勾選任何package
第二步半沽,要有地板爽柒,要有光
- Game Object -> Create Other -> Cube
- 在 Hierarchy 里選擇 Cube,改名為 Floor者填,在對(duì)應(yīng) Inspector 里設(shè)置 Position (0, 0, 0)浩村;Rotation (0, 0, 0);Scale (100, 1, 100)占哟。
- Game Object -> Create Other -> Point Light
- 在對(duì)應(yīng)的 Inspector 里設(shè)置 Position (0, 20, 0)心墅,Range 設(shè)置為40。
第三步榨乎,一堵紅色的墻
- Game Object -> Create Other -> Cube
- 在 Cube 對(duì)應(yīng)的 Inspector 里設(shè)置 Position (0, 1, 0)怎燥,Add Component -> Physics -> Rigidbody
- 在 Project 面板里 Create -> Material,重命名為 Red谬哀,Main Color 選擇為紅色刺覆。
- 拖動(dòng) Red 到 Cube 上∈芳澹看到 Cube 變成紅色谦屑。
- 使用(cmd+D)復(fù)制 Cube 并用 SNAP 技能(cmd+鼠標(biāo)左鍵)沿著 Z 軸拖動(dòng)。(Windows 下 cmd 換成 ctrl)
- 重復(fù)步驟5篇梭,9次氢橙,可以看到10個(gè)并排的紅色方塊。
- Game Object -> Create Empty恬偷,在 Hierarchy 里可以看到有一個(gè)新的 Game Object悍手,重命名為 Cube Holder。把10個(gè) Cube 都拖到 Cube Holder 里作為它的子節(jié)點(diǎn)袍患。
- 重復(fù)步驟5坦康,7次,這次對(duì) Cube Holder 使用诡延,向 Y 軸方向向上移動(dòng)滞欠。
第四步,射擊吧肆良,子彈
- Game Object -> Create Other -> Sphere
- 在 Sphere 對(duì)應(yīng)的 Inspector 里 Add Component -> Physics -> Rigidbody
- 在 Project 面板里 Create -> Material筛璧,重命名為 Bullet,Main Color 選擇為藍(lán)色惹恃。
- 移動(dòng) Main Camera 到正面對(duì)著墻夭谤,我們希望由 Main Camera 來(lái)射擊。
- 把 Hierarchy 里面的 Sphere 拖動(dòng)到 Project 里巫糙,讓其成為一個(gè) Prefab朗儒,然后在 Hierarchy 里刪除它。
- 在 Project 里新建一個(gè) Shooter 的 C# 腳本,雙擊打開(kāi)采蚀,加入三個(gè)公共變量:
```
public Rigidbody bullet;
public float power = 1500f;
public float moveSpeed = 2f;
+ 在 Update() 方法里加入以下代碼:
```
float h = Input.GetAxis ("Horizontal") * Time.deltaTime * moveSpeed;
float v = Input.GetAxis ("Vertical") * Time.deltaTime * moveSpeed;
transform.Translate (h, v, 0);
//根據(jù)用戶輸入更改水平和垂直視角/射擊點(diǎn)
if (Input.GetButtonUp ("Fire1")) {
Rigidbody instance = Instantiate(bullet, transform.position, transform.rotation) as Rigidbody;
Vector3 fwd = transform.TransformDirection(Vector3.forward);
instance.AddForce(fwd * power);
}
//如果“Fire1”被觸發(fā)疲牵,即玩家鼠標(biāo)左鍵 或 左 ctrl 按下,生成一個(gè) bullet 實(shí)體 instance榆鼠,并給這個(gè)實(shí)體一個(gè)向前的力。
- 注意在代碼里 public class 的名字是否改成了 Shooter亥鸠。
- 把代碼從 Project 里拖到 Hierarchy 里的 Main Camera妆够。Main Camera 的 Inspector 會(huì)出現(xiàn)一個(gè) Shooter 的Component。把 Project 里的 Sphere Prefab 拖到這個(gè) Shooter 里 bullet 邊的小方塊里负蚊∩衩茫看到出現(xiàn) Sphere(Rigidbody)。
保存家妆,運(yùn)行 Game鸵荠,破墻。
都看到這了伤极,留個(gè)言蛹找,點(diǎn)亮那個(gè) ? 讓我開(kāi)心一下吧~~_