Unity 攝影機跟隨教學:讓你的遊戲畫面更生動
文、查理
玩遊戲的時候,操控玩家角色移動時,畫面會跟隨玩家移動,玩家停下時,畫面會緩緩停下來,攝影機跟隨要如何設定呢?會不會非常的困難?需要寫非常多的程式嗎?
如果使用Unity製作,只需要一點點程式碼,就可以完成,也不需要做太多的設定,這都是因為Unity提供了非常強大的各項功能!
首先我們可以到Unity官方網站的AssetStore素材商店,下載一個包含動畫的角色模型及場景來做測試。
角色場景的部分,主要需要三個步驟:
第一步驟:在網頁尋找包含動畫的角色模型以及場景模型
Unity Asset Store 3D類別,搜尋:Lovely Animals PACK,Pricing(價格):0(免費)
Unity Asset Store 3D類別,搜尋:Polylised - Medieval Desert City,Pricing(價格):0(免費)
可看到素材的相關預覽圖片或影片、版本、檔案大小等資訊,將檔案的名稱複製後,即可開啟Unity軟體,在Unity裡下載檔案。
第二步驟:下載包含動畫的角色模型以及場景模型
在Unity開啟素材商店面板,Window Asset Store
1. 註冊一個帳號,並登入後,分別搜尋:Lovely Animals PACK
2. 點選該項目進入下載頁面後,先點選Download下載完成後,再點選Import匯入Project素材庫
第三步驟:場景及角色設定
1. 在Project(素材庫),展開Polylised - Medieval Desert City資料夾,再點開Demo資料夾,點擊2次Demo_01,打開範例場景檔。
2. 在Project(素材庫),展開JKT_Art資料夾,再點開Animals資料夾,再點開cat資料夾,將Cat拖曳到Scene(場景)的街道上。
3. 但是貓咪好像有點太大隻,可以縮小一些。
Hierarchy(物件清單),點擊Cat,在Inspector(屬性)欄位設定貓咪位置及大小
Transform PositionX : 45 ,Y : 0, Z : 0
Transform SczleX : 0.5 ,Y : 0.5, Z : -0.5
第四步驟:貓咪角色控制程式碼設定
在Project(素材庫),按下左上方的Create按鈕,新增一個C# Script(程式碼),命名為Movement(玩家控制的程式碼),如下:
using System.Collections
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour {
public float speed = 1f;
public float rotateSpeed = 50f;
private Vector3 movement;
private float rotation;
void Update ()
{
movement.z = Input.GetAxis(Vertical) * speed * Time.deltaTime;
rotation = Input.GetAxis(Horizontal) * rotateSpeed * Time.deltaTime;
}
void FixedUpdate ()
{
transform.Translate(movement, Space.Self);
transform.Rotate(0f, rotation, 0f);
float h = Input.GetAxisRaw (Horizontal);
float v = Input.GetAxisRaw (Vertical);
if(h != 0 || v != 0){
GetComponent().SetTrigger (Walk);
}else{
GetComponent ().SetTrigger (Idle);
}
}
}
完成之後,再將程式碼拖曳到Cat玩家物件上,播放測試看看,按下鍵盤的方向鍵,即可開始移動我們的玩家物件
攝影機地的部分,主要需要3個步驟:
第一步驟:設定攝影機位置及角度
Hierarchy(物件清單),展開Core,點選Main Camera
Inspector(屬性)欄位設定攝影機位置及角度
Transform Position X :45 ,Y : 5, Z : -15
Transform Rotation X : 10 ,Y : 0, Z : -0
第二步驟:攝影機跟隨程式碼設定
在Project(素材庫),按下左上方的Create按鈕,新增一個C# Script(程式碼),命名為CameraFollow(玩家控制的程式碼),如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraFollow : MonoBehaviour {
public Transform target;
public float smoothing = 5f;
Vector3 offset;
// Use this for initialization
void Start () {
offset = transform.position - target.position;
}
// Update is called once per frame
void Update () {
}
void FixedUpdate()
{
Vector3 targetCamPos = target.position + offset;
transform.position = Vector3.Lerp (transform.position, targetCamPos, smoothing * Time.deltaTime);
}
}
完成之後,再將程式碼拖曳到Main Camera攝影機物件上
在Hierarchy(物件清單),先點選Main Camera攝影機物件,左鍵按住Cat玩家物件拖曳到Inspector(屬性)Target的欄位裡,將貓咪指定為攝影機的跟隨目標。
播放測試看看,按下鍵盤的方向鍵,即可開始移動貓咪物件,攝影機緩緩跟隨。
FB粉絲團:https://www.facebook.com/lccnetzone
YouTube頻道:https://www.youtube.com/user/LccnetTaiwan
痞客邦Blog:http://lccnetvip.pixnet.net/blog