今天我們首先要來建立每個模型的 Prefab,我們要先在 Material 資料夾裡面右鍵創立一個 Material,點選他之後把 Texture 指定到 Material 上面
指定完成之後再把 Material 套用在模型上
這樣我們就完成了 Prefab 的建置。
我們把遊戲中的物件都拖到場景中並調整他們的位置,包括小鳥、建築和地板
接下來我們到 Lighting 面板中選擇我們導入的 Skybox ,我們選擇的是 Midday
這樣基本的遊戲場景就建立好囉!
我們首先要先讓鳥會自然下落,所以我們給鳥加上 Rigidbody 組件,並且我們希望鳥在下落時會與地板碰撞,所以我們給鳥和地板分別加上 SphereCollider 和 BoxCollider 。
這樣當我們執行遊戲的時候鳥就會自然下落到地面上囉
我們希望按下空白鍵的時候鳥會自動向上跳,所以我們要建立一個腳本,取名為 Bird.cs
// Bird.cs
using UnityEngine;
public class Bird : MonoBehaviour
{
[SerializeField] private Rigidbody rb;
[SerializeField] private float jumpForce;
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.velocity = Vector3.up * jumpForce;
}
}
}
我們使用 Input 來偵測玩家的輸入,GetKeyDown(KeyCode.Space) 表示當空白鍵被按下時,我們就調整 velocity ,代表角色的速度,而他有 x, y, z 三個方向,Vector3.up 就表示 y 軸的方向。我們這邊宣告變數為 [SerializeField] 而不是 public 的好處是,變數不會被外部存取,但同時又能顯示在 Unity 面板上讓我們來調整數值。

執行遊戲按下空白鍵之後鳥就能夠原地上下跳囉
接下來我們希望鳥在飛的時候可以播放動畫,所以我們要來創建 Animator Controller ,將這個 Animator Controller 拖拉到 Bird 物件上表示這是 Bird 的動畫控制器,再來依序導入飛行的動畫和墜落的動畫。導入後對這兩個動畫案右鍵點選 Make Transition,建立兩個動畫的連結
+ 建立一個 bool 命名為 isFly ,這是拿來判斷我們現在應該播放飛行動畫還是墜落動畫的布林值isFly 等於 false 的條件isFly 等於 true 的條件// Bird.cs
using UnityEngine;
public class Bird : MonoBehaviour
{
[SerializeField] private Rigidbody rb;
[SerializeField] private float jumpForce;
[SerializeField] private Animator birdAnimator;
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.velocity = Vector3.up * jumpForce;
}
if (rb.velocity.y > 0)
{
birdAnimator.SetBool("isFly", true);
}
else
{
birdAnimator.SetBool("isFly", false);
}
}
}
Animator 的變數,命名為 birdAnimator 。SetBool 可以改變我們剛剛設置的布林變數數值,以此來調整鳥的動畫播放