FeaturedGame DevelopmentUnity 3D

Workshop เขียนเกมแนว Temple Run ด้วย Unity 3D ตอนที่ 1

คิดว่า Workshop ออนไลน์ตัวนี้น่าจะช่วยเหลือคนที่่ต้องการไอเดียพัฒนาเกมด้วย Unity 3D นำไปใช้ศึกษา และปรับปรุงกันได้ตัวอย่างเกมที่จะทำคือเกมแนว Subway Surfer หรือ Temple Run ครับ


แนวคิดการออกแบบเกม ให้เราร่าง Story Line ด้วย Tagline สั้นๆ ออกมาก่อน 1 บรรทัด ว่าเกมนี้คืออะไร

“อัศวินเกรียนวิ่งเก็บเหรียญหนีก๊อบบลิน”

ต่อมาคือการสร้าง Story Board ด้วยมือก่อน โดยมีคำอธิบายว่าตัวละครของเราคือใคร กำลังทำอะไร จุดมุ่งหมายคืออะไร

อัศวินน้อยแอบไปขโมยขุมทรัพย์ของก๊อบบลิน จนกระทั่งโดนจับได้จึงต้องวิ่งหนีตายออกจากรัง และเก็บเหรียญกลับบ้านไปด้วยเพื่อเอาไปใช้หนี้ให้ชาวนา

ดังนั้น เกมที่จะสร้างนี้มีชื่อว่า Knight Runner ครับ

Project Setup
เปิดโปรแกรม Unity ขึ้นมาทำการ Setup ตัว Project ของเรา หรือทำการ New Project ใหม่เลยครับเลือกเป็นเกมแนว 3D

screen1

ทำการ ออกแบบ Game World ของเราขึ้นมาก่อน โดยการบันทึก Scene แรกของเราเลยครับชื่อว่า “game” เพื่อจะได้ใช้เป็น Scene ในการเล่น

screen2

ต่อจากนั้นอย่าลืมเรื่องแสงในเกมครับเพื่อ ความสว่างที่สมเหตุสมผลก็ใส่ Directional Light ลงไปในเกม สำหรับ Unity 4.5 ก็เลือกเมนู GameObject-> Create Other ส่วน 4.6.1 ก็ GameObject->Light เลยครับ

screen3

เมื่อวางแสงเรียบร้อยแล้วก็ทำการ ออกแบบฉากใน Game World ของเรา โดยการสร้าง GameObject ขึ้นมาใหม่เลือกใช้ Cube ออกมาวางไว้ในฉากของเรา

screen4

ตั้งค่าของ Cube ตัวนี้ ส่วนของ Position เซ็ตเป็น (0,0,15) ครับ ส่วนของ Scale เซ็ตเป็น (10,0.5,50)

screen5

เปลี่ยนชื่อใน Inspector จาก Cube เป็น “Ground”

screen6

ทำการสร้าง GameObject “Cube” อีกตัวขึ้นมาใหม่ ตั้งชื่อ Inspector ว่า “Wall” เพื่อเป็นกำแพง กำหนดค่า Position เซ็ตเป็น (5.5,0.7,15.5) ส่วนของ Rotation อยู่ที่ (0,0,90) ปรับ Scale เป็น (5,1,50)

screen7

 

screen12

 

screen8

ทำการ Copy ตัว Wall ฝั่งขวาของเราไปยังฝั่งซ้าย พร้อม Rotate ให้ Camera ของมันหัสเข้าหากัน

screen9

คลิกที่ Main Camera ใน Heirarchy ตั้งค่า Position เป็น (0,3,-10) และ Rotation เป็น (25,0,0) จะเห็นว่าเราจะได้ Game World ของเราสมบูรณ์เรียบร้อยครับ

screen10

มุมมองของกล้องจะเป็นดังนี้

screen11

ต่อมาเรามาลงสีให้กับฉากของเรา โดยการสร้าง Material ใหม่ขึ้นมาชื่อว่า Ground และ Wall โดยหา Texture ใส่ให้กับมัน จะสร้างเองก็ได้ แต่ผมเลือก Asset Store ส่วนของ Terrian Assets มาใส่

screen13

ใส่ให้กับ Ground

screen14

ใส่ให้กับ Wall

screen15

 

ปรับแต่งให้สวยงามตามใจชอบได้เต็มที่ครับ ขอแค่ว่าพอสุดท้ายแล้วมุมมองของ Game View ออกมาเป็นแบบนี้

screen16

ใส่ Sky Boxes ลงไปที่ Main Camera หน่อยนึงเพื่อเก็บรายละเอียดของท้องฟ้า

เพิ่มท้องฟ้า
เพิ่มท้องฟ้า

ขั้นตอนต่อมานำตัวละครเข้าสู่ฉาก ซึ่งเจ้าตัวละครผมก็เอามาจาก Asset Store ของ Unity มาแก้ไข Texture ของตัวละครใหม่เล็กน้อย

วางตัวละครลงในเกม
วางตัวละครลงในเกม

คลิกที่ ตัวละครของเรา เพิ่ม Animation เข้าไปคือ Run ตั้งค่าให้ Automatic

screen19

ตามด้วยเพิ่ม Character Controller เข้าไปเพื่อควบคุมตัวละครที่เราจะใช้ภายหลัง

screen20

ปรับตัว Capsule ของ Character Controller ของเราให้พอดีกับตัว Model ของ ตัวละครเล็กน้อย

ปรับ Character Controller ให้ดีๆ
ปรับ Character Controller ให้ดีๆ

ทำฉากให้เลื่อนเพื่อให้เรารู้สึกเหมือนวิ่งไปข้างหน้า

ใน Tutorial นี้จะมีการเขียน Script เข้าไปซึ่ง Script นั้นจะเป็น C# ดังนั้นให้ไปสร้าง Script ที่ Project ของเราเลือกเป็น Create-> C# Script ตั้งชื่อว่า RoadControl

Create-> C# Script ตั้งชื่อ RoadControl.
Create-> C# Script ตั้งชื่อ RoadControl.

เปิด Mono Develop  ขึ้นมา เพิ่มคำสั่ง C# ลงไปทีไฟล์ RoadControl.cs ดัังนี้

using UnityEngine;
using System.Collections;

public class RoadControl : MonoBehaviour {
	float speed = .5f;
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		float offset = Time.time * speed;                             
		GetComponent<Renderer>().material.mainTextureOffset = new Vector2(0, -offset); 
	}
}

ส่วนของคำสั่งที่เพิ่มนั้นคือ

float speed = .5f;

เป็นการบอกความเร็วของฉากที่จะเลื่อนเข้ามาที่กล้องที่ .5f ใช้คำนวณกับการเลื่อน Texture ของ GameObject อย่าง Ground หรือ พื้น และ  Wall หรือ ผนังด้านข้างให้เลื่อนเข้าหากล้อง

float offset = Time.time * speed;                             
		renderer.material.mainTextureOffset = new Vector2(0, -offset);

ทำการ Add Component ส่วนของ Script โดยเลือก RoadControl.cs ให้กับ Ground และ Wall ที่เราสร้างให้เรียบร้อย

ใส่ RoadControl.cs เข้าไป
ใส่ RoadControl.cs เข้าไป

 

ใส่ทั้ง Ground และ Wall
ใส่ทั้ง Ground และ Wall

ทำการ Run เกมจะพบกับผลลัพธ์ เหมือน Video ด้านล่างนี้

จะเห็นว่า ตัวอย่างของบทนี้คือการ Setup ตัว Game Worlds และแนวคิดในการเล่นของเกมประเภท Unfinished Running อย่าง Temple Run ครับ

ในบทเรียนต่อไปจะเป็นการ เก็บ แต้มเอาคะแนน ซึ่งจะเป็นเหรียญ และแต้มที่เก็บแล้วเสียคะแนนหรือ พลังชีวิตเป็นต้นไปจนถึง การสร้างฉาก Title และ Menu เกมก่อนจะเล่นเกมครับ

Asst. Prof. Banyapon Poolsawas

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

Related Articles

Back to top button

Adblock Detected

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