บทที่ 3: การใช้กล้องและการควบคุมมุมมอง

ในเกมทั้ง 2D และ 3D กล้องเป็นองค์ประกอบสำคัญที่กำหนดมุมมองของผู้เล่นว่าจะเห็นสิ่งต่าง ๆ ในเกมอย่างไร การควบคุมกล้องจึงเป็นเรื่องสำคัญที่ช่วยให้เราสามารถจัดการการแสดงผลของฉากได้ตามที่ต้องการ ในบทนี้เราจะมาเรียนรู้การปรับแต่งกล้องใน Unity สำหรับเกม 2D และ 3D


กล้องในเกม 2D

ในเกม 2D กล้องจะทำหน้าที่เหมือนการแสดงภาพในแนวราบ (Planar View) ซึ่งมักจะเป็นมุมมองจากด้านหน้า การควบคุมกล้องในเกม 2D สามารถทำได้ง่าย ๆ ด้วยขั้นตอนต่อไปนี้:

  1. เลือกกล้องหลักใน Hierarchy (ฮิเอราร์คี) โดยปกติจะชื่อว่า Main Camera
  2. ในแถบ Inspector (อินสเปกเตอร์) สามารถปรับตำแหน่ง (Position) ของกล้องได้ตามต้องการโดยใช้ค่าของแกน X และ Y
  3. การเลื่อนกล้องตามตัวละครในเกม 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

  1. เลือก Main Camera ใน Hierarchy
  2. ในแถบ Inspector สามารถปรับตำแหน่ง (Position) ของกล้องโดยใช้แกน X, Y, และ Z
  3. นอกจากนี้ยังสามารถปรับการหมุนของกล้อง (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 และใช้ในการสร้างเอฟเฟกต์การเลื่อนกล้องแบบมืออาชีพ เช่น การซูมเข้าออก หรือการหมุนกล้อง

  1. ไปที่เมนู Window > Package Manager
  2. เลือก Cinemachine และคลิก Install
  3. เมื่อติดตั้งแล้ว สามารถสร้างกล้อง Cinemachine ได้โดยไปที่เมนู Cinemachine > Create 2D Camera หรือ Create FreeLook Camera สำหรับการหมุนกล้องรอบวัตถุ

Cinemachine จะช่วยให้เราสามารถปรับการเคลื่อนไหวของกล้องในเกมได้อย่างนุ่มนวลและสมจริงยิ่งขึ้น โดยไม่จำเป็นต้องเขียนโค้ดเพิ่มเติมมากมาย


Free Joomla templates by Ltheme