บทเรียนต่อไปนี้เป็นตัวอย่างการสร้างเกม 2 มิติแนว Side Scrolling Platform แบบเดินไปแนวระนาบบนฉากด้วย Unity2D เหมือน Mario เป็นต้นด้วยภาษา C#
บทเรียนก่อนหน้านี้
- Unity2D การนำ Sprite Sheets ไปสร้าง Animation ในเกม
- สร้างเกม 2D วิ่งเก็บของในฉากด้วย Unity
- รวมบทความการพัฒนาเกม 2 มิติ
ถ้าได้ทำการทบทวนเป็นที่เรียบร้อยแล้วก็มาพัฒนากันต่อดีกว่าครับ ผมจะทำการต่อยอดการพัฒนาจากงานก่อนหน้านี้ที่ตัวละครจะวิ่งไปมาได้ สิ่งที่เราต้องทำเพิ่มต่อจากนี้คือการทำ Level Assets และ Box Collider2D ครับ ซึ่งบางคนถนัดทำทีละชิ้นบางคนก็ทำชิ้นเดียวแล้วใช้ Box Collider2D จัดการเอา
สำหรับตัวอย่างนี้คงเป็นสำหรับผู้เริ่มต้นดังนั้นเป็นแบบตัดใช้ทีละชิ้นครับ ภาพที่ใช้ใน Project นี้คือ
นำมาตัด Sprite Editor ให้แบบ auto ให้เรียบร้อยครับจะได้เป็นชิ้นไปใช้เลย
ลากไปวางทีละชิ้น แล้วใส่ Component เป็น Rigidbody2D และ Box Collider2D ให้เรียบร้อยทีละชิ้นแล้วทำการ clone เก็บไว้ใน Prefab ซะทีละชิ้นแล้วทำการลากมาประกอบฉาก
ตัวละครจะวิ่งไปมาในฉากได้แล้วแต่กล้องไม่เคลื่อนตาม ดังนั้นสิ่งที่จำเป็นต่อการทำเกม Side-Scrolling นั้นคือกล้องที่วิ่งตามตัวละครครับ ดังนั้นคลิกที่กล้อง Main Camera ทำการเพิ่ม C# Script เข้าไปชื่อว่า GameCamera.cs
ไฟล์ GameCamera.cs นั้นคือคำสั่งในการติดตาม Target ซึ่งก็คือ Player ของเราครับ
using UnityEngine; using System.Collections; public class GameCamera : MonoBehaviour { public float dampTime = 0.15f; private Vector3 velocity = Vector3.zero; public Transform target; void Update () { if (target) { Vector3 point = GetComponent<Camera>().WorldToViewportPoint(target.position); Vector3 delta = target.position - GetComponent<Camera>().ViewportToWorldPoint(new Vector3(0.5f, 0.5f, point.z)); Vector3 destination = transform.position + delta; transform.position = Vector3.SmoothDamp(transform.position, destination, ref velocity, dampTime); } } }
ระยะการซูมของกล้องขึ้นอยู่กับตำแหน่ง X,Y ในส่วนบรรทัดนี้ครับ
Vector3 delta = target.position - GetComponent<Camera>().ViewportToWorldPoint(new Vector3(0.5f, 0.5f, point.z));
ไปดูที่ Inspector ของ Main Camera เราจะต้องลาก Player ของเราจาก Hierarchy ไปวางใน Target เพราะเราประกาศไว้ใน GameCamera.cs
public Transform target;
ต่อจากนี้ก็ลอง Play แล้วดูสิว่ากล้องมันวิ่งตามตัวละครของเราหรือเปล่า ตามตัวอย่าง
กล้องตกลงมาตามตัวละครเมื่อวิ่งหลุดฉาก หรือวิ่งตามเมื่อเราเดินไปมากระโดดไปยัง Block ที่วาง
จะเห็นว่าตอนนี้ตัวละครของเรามีการวิ่งไปมาในฉากแล้ว ในตัวอย่างของวีดีโอข้างล่าง จะมีการใส่ ศัตรู และอาวุธลงไป ในบทเรียนต่อจากนี้จะเป็นเทคนิคการ ยกกล่อง หรือวัตถุแล้วปาไปข้างหน้าเหมือนเกม Super Mario ครับ
ส่วนนี่วีดีโอตัวอย่างการเล่น
สำหรับ นักเรียน ปสช. ปวส. หรือ มัธยมปลาย ที่อยากเรียนการพัฒนาเกมแบบ เข้มข้น สามารถมาเรียนหลักสูตรปริญญาตรี 4 ปี (และต่อเนื่อง) สาขา การออกแบบเชิงโต้ตอบและการพัฒนาเกม วิทยาลัยนวัตกรรมด้านเทคโนโลยีสารสนเทศ และวิศวกรรม (CITE: College of Innovative Technology and Engineering) มหาวิทยาลัยธุรกิจบัณฑิตย์ได้ เลยนะครับ #ฝากประชาสัมพันธ์ในฐานะหนึ่งในผู้ดูแลหลักสูตรครับ