今天我們首先要來建立每個模型的 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
可以改變我們剛剛設置的布林變數數值,以此來調整鳥的動畫播放