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
Game & Mobile Development AR VR XR
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Adblock Detected

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