บทที่ 3: การใช้กล้องและการควบคุมมุมมอง
ในเกมทั้ง 2D และ 3D กล้องเป็นองค์ประกอบสำคัญที่กำหนดมุมมองของผู้เล่นว่าจะเห็นสิ่งต่าง ๆ ในเกมอย่างไร การควบคุมกล้องจึงเป็นเรื่องสำคัญที่ช่วยให้เราสามารถจัดการการแสดงผลของฉากได้ตามที่ต้องการ ในบทนี้เราจะมาเรียนรู้การปรับแต่งกล้องใน Unity สำหรับเกม 2D และ 3D
กล้องในเกม 2D
ในเกม 2D กล้องจะทำหน้าที่เหมือนการแสดงภาพในแนวราบ (Planar View) ซึ่งมักจะเป็นมุมมองจากด้านหน้า การควบคุมกล้องในเกม 2D สามารถทำได้ง่าย ๆ ด้วยขั้นตอนต่อไปนี้:
- เลือกกล้องหลักใน Hierarchy (ฮิเอราร์คี) โดยปกติจะชื่อว่า Main Camera
- ในแถบ Inspector (อินสเปกเตอร์) สามารถปรับตำแหน่ง (Position) ของกล้องได้ตามต้องการโดยใช้ค่าของแกน X และ Y
- การเลื่อนกล้องตามตัวละครในเกม 2D สามารถทำได้ด้วยโค้ด C# ตัวอย่างเช่น:
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform target; // ตัวละครที่ต้องการให้กล้องตาม
public float smoothing = 5f; // ความเร็วในการตาม
void LateUpdate()
{
Vector3 targetPosition = new Vector3(target.position.x, target.position.y, transform.position.z);
transform.position = Vector3.Lerp(transform.position, targetPosition, smoothing * Time.deltaTime);
}
}
โค้ดนี้จะทำให้กล้องค่อย ๆ เลื่อนตามตัวละครเป้าหมายในแนวแกน X และ Y โดยมีความนุ่มนวลในการเลื่อน
กล้องในเกม 3D
ในเกม 3D กล้องมีความซับซ้อนขึ้นเนื่องจากมีการจัดการทั้งในแกน X, Y, และ Z ซึ่งทำให้สามารถหมุนหรือเปลี่ยนมุมมองได้หลากหลายกว่าเกม 2D
- เลือก Main Camera ใน Hierarchy
- ในแถบ Inspector สามารถปรับตำแหน่ง (Position) ของกล้องโดยใช้แกน X, Y, และ Z
- นอกจากนี้ยังสามารถปรับการหมุนของกล้อง (Rotation) เพื่อกำหนดมุมมองที่เหมาะสม ตัวอย่างเช่น การปรับมุมกล้องให้มองลงมาจากด้านบน หรือมองขึ้นจากด้านล่าง
การควบคุมกล้องในเกม 3D
ในเกม 3D เราอาจต้องการให้กล้องเคลื่อนไหวตามตัวละครหรือหมุนรอบวัตถุใดวัตถุหนึ่ง เพื่อสร้างมุมมองที่น่าสนใจ วิธีการนี้สามารถทำได้โดยใช้โค้ด ตัวอย่างเช่น:
using UnityEngine;
public class CameraFollow3D : MonoBehaviour
{
public Transform target; // ตัวละครที่กล้องจะตาม
public Vector3 offset; // ระยะห่างของกล้องจากตัวละคร
void Update()
{
transform.position = target.position + offset; // เลื่อนกล้องตามตำแหน่งตัวละคร
transform.LookAt(target); // หมุนกล้องให้หันไปทางตัวละคร
}
}
โค้ดนี้จะทำให้กล้องเคลื่อนที่ตามตัวละครโดยมีระยะห่างที่กำหนด และหมุนกล้องให้หันมองไปที่ตัวละครเสมอ
การใช้ Cinemachine สำหรับการจัดการกล้องขั้นสูง
Cinemachine เป็นเครื่องมือเสริมใน Unity ที่ช่วยให้การจัดการกล้องง่ายและยืดหยุ่นมากขึ้น สามารถติดตั้งได้จาก Package Manager และใช้ในการสร้างเอฟเฟกต์การเลื่อนกล้องแบบมืออาชีพ เช่น การซูมเข้าออก หรือการหมุนกล้อง
- ไปที่เมนู Window > Package Manager
- เลือก Cinemachine และคลิก Install
- เมื่อติดตั้งแล้ว สามารถสร้างกล้อง Cinemachine ได้โดยไปที่เมนู Cinemachine > Create 2D Camera หรือ Create FreeLook Camera สำหรับการหมุนกล้องรอบวัตถุ
Cinemachine จะช่วยให้เราสามารถปรับการเคลื่อนไหวของกล้องในเกมได้อย่างนุ่มนวลและสมจริงยิ่งขึ้น โดยไม่จำเป็นต้องเขียนโค้ดเพิ่มเติมมากมาย