2D Game Development

สร้างเกม 2 มิติด้วย Unity 2D กับการทำเกม Side Scrolling Platform

บทเรียนต่อไปนี้เป็นตัวอย่างการสร้างเกม 2 มิติแนว Side Scrolling Platform แบบเดินไปแนวระนาบบนฉากด้วย Unity2D เหมือน Mario เป็นต้นด้วยภาษา C#

บทเรียนก่อนหน้านี้

ถ้าได้ทำการทบทวนเป็นที่เรียบร้อยแล้วก็มาพัฒนากันต่อดีกว่าครับ ผมจะทำการต่อยอดการพัฒนาจากงานก่อนหน้านี้ที่ตัวละครจะวิ่งไปมาได้ สิ่งที่เราต้องทำเพิ่มต่อจากนี้คือการทำ Level Assets และ Box Collider2D ครับ ซึ่งบางคนถนัดทำทีละชิ้นบางคนก็ทำชิ้นเดียวแล้วใช้ Box Collider2D จัดการเอา

สำหรับตัวอย่างนี้คงเป็นสำหรับผู้เริ่มต้นดังนั้นเป็นแบบตัดใช้ทีละชิ้นครับ ภาพที่ใช้ใน Project นี้คือ

Background

นำมาตัด Sprite  Editor ให้แบบ auto ให้เรียบร้อยครับจะได้เป็นชิ้นไปใช้เลย

Screen Shot 2016-09-04 at 8.50.21 PM

ลากไปวางทีละชิ้น แล้วใส่ Component เป็น Rigidbody2D และ Box Collider2D ให้เรียบร้อยทีละชิ้นแล้วทำการ clone เก็บไว้ใน Prefab ซะทีละชิ้นแล้วทำการลากมาประกอบฉาก

Screen Shot 2016-09-04 at 8.51.42 PM

ตัวละครจะวิ่งไปมาในฉากได้แล้วแต่กล้องไม่เคลื่อนตาม ดังนั้นสิ่งที่จำเป็นต่อการทำเกม Side-Scrolling นั้นคือกล้องที่วิ่งตามตัวละครครับ ดังนั้นคลิกที่กล้อง Main Camera ทำการเพิ่ม C# Script เข้าไปชื่อว่า GameCamera.cs

Screen Shot 2016-09-04 at 8.53.38 PM

ไฟล์ 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;

Screen Shot 2016-09-04 at 8.56.53 PM

ต่อจากนี้ก็ลอง Play แล้วดูสิว่ากล้องมันวิ่งตามตัวละครของเราหรือเปล่า ตามตัวอย่าง
Screen Shot 2016-09-04 at 8.58.08 PMกล้องตกลงมาตามตัวละครเมื่อวิ่งหลุดฉาก หรือวิ่งตามเมื่อเราเดินไปมากระโดดไปยัง Block ที่วาง

Screen Shot 2016-09-04 at 8.59.19 PM

จะเห็นว่าตอนนี้ตัวละครของเรามีการวิ่งไปมาในฉากแล้ว ในตัวอย่างของวีดีโอข้างล่าง จะมีการใส่ ศัตรู และอาวุธลงไป ในบทเรียนต่อจากนี้จะเป็นเทคนิคการ ยกกล่อง หรือวัตถุแล้วปาไปข้างหน้าเหมือนเกม Super Mario ครับ

Screen Shot 2016-09-04 at 9.01.52 PM

ส่วนนี่วีดีโอตัวอย่างการเล่น

สำหรับ นักเรียน ปสช. ปวส. หรือ มัธยมปลาย ที่อยากเรียนการพัฒนาเกมแบบ เข้มข้น สามารถมาเรียนหลักสูตรปริญญาตรี 4 ปี (และต่อเนื่อง) สาขา การออกแบบเชิงโต้ตอบและการพัฒนาเกม วิทยาลัยนวัตกรรมด้านเทคโนโลยีสารสนเทศ และวิศวกรรม (CITE: College of Innovative Technology and Engineering) มหาวิทยาลัยธุรกิจบัณฑิตย์ได้ เลยนะครับ #ฝากประชาสัมพันธ์ในฐานะหนึ่งในผู้ดูแลหลักสูตรครับ

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน