คิดว่า Workshop ออนไลน์ตัวนี้น่าจะช่วยเหลือคนที่่ต้องการไอเดียพัฒนาเกมด้วย Unity 3D นำไปใช้ศึกษา และปรับปรุงกันได้ตัวอย่างเกมที่จะทำคือเกมแนว Subway Surfer หรือ Temple Run ครับ
แนวคิดการออกแบบเกม ให้เราร่าง Story Line ด้วย Tagline สั้นๆ ออกมาก่อน 1 บรรทัด ว่าเกมนี้คืออะไร
“อัศวินเกรียนวิ่งเก็บเหรียญหนีก๊อบบลิน”
ต่อมาคือการสร้าง Story Board ด้วยมือก่อน โดยมีคำอธิบายว่าตัวละครของเราคือใคร กำลังทำอะไร จุดมุ่งหมายคืออะไร
อัศวินน้อยแอบไปขโมยขุมทรัพย์ของก๊อบบลิน จนกระทั่งโดนจับได้จึงต้องวิ่งหนีตายออกจากรัง และเก็บเหรียญกลับบ้านไปด้วยเพื่อเอาไปใช้หนี้ให้ชาวนา
ดังนั้น เกมที่จะสร้างนี้มีชื่อว่า Knight Runner ครับ
Project Setup
เปิดโปรแกรม Unity ขึ้นมาทำการ Setup ตัว Project ของเรา หรือทำการ New Project ใหม่เลยครับเลือกเป็นเกมแนว 3D
ทำการ ออกแบบ Game World ของเราขึ้นมาก่อน โดยการบันทึก Scene แรกของเราเลยครับชื่อว่า “game” เพื่อจะได้ใช้เป็น Scene ในการเล่น
ต่อจากนั้นอย่าลืมเรื่องแสงในเกมครับเพื่อ ความสว่างที่สมเหตุสมผลก็ใส่ Directional Light ลงไปในเกม สำหรับ Unity 4.5 ก็เลือกเมนู GameObject-> Create Other ส่วน 4.6.1 ก็ GameObject->Light เลยครับ
เมื่อวางแสงเรียบร้อยแล้วก็ทำการ ออกแบบฉากใน Game World ของเรา โดยการสร้าง GameObject ขึ้นมาใหม่เลือกใช้ Cube ออกมาวางไว้ในฉากของเรา
ตั้งค่าของ Cube ตัวนี้ ส่วนของ Position เซ็ตเป็น (0,0,15) ครับ ส่วนของ Scale เซ็ตเป็น (10,0.5,50)
เปลี่ยนชื่อใน Inspector จาก Cube เป็น “Ground”
ทำการสร้าง GameObject “Cube” อีกตัวขึ้นมาใหม่ ตั้งชื่อ Inspector ว่า “Wall” เพื่อเป็นกำแพง กำหนดค่า Position เซ็ตเป็น (5.5,0.7,15.5) ส่วนของ Rotation อยู่ที่ (0,0,90) ปรับ Scale เป็น (5,1,50)
ทำการ Copy ตัว Wall ฝั่งขวาของเราไปยังฝั่งซ้าย พร้อม Rotate ให้ Camera ของมันหัสเข้าหากัน
คลิกที่ Main Camera ใน Heirarchy ตั้งค่า Position เป็น (0,3,-10) และ Rotation เป็น (25,0,0) จะเห็นว่าเราจะได้ Game World ของเราสมบูรณ์เรียบร้อยครับ
มุมมองของกล้องจะเป็นดังนี้
ต่อมาเรามาลงสีให้กับฉากของเรา โดยการสร้าง Material ใหม่ขึ้นมาชื่อว่า Ground และ Wall โดยหา Texture ใส่ให้กับมัน จะสร้างเองก็ได้ แต่ผมเลือก Asset Store ส่วนของ Terrian Assets มาใส่
ใส่ให้กับ Ground
ใส่ให้กับ Wall
ปรับแต่งให้สวยงามตามใจชอบได้เต็มที่ครับ ขอแค่ว่าพอสุดท้ายแล้วมุมมองของ Game View ออกมาเป็นแบบนี้
ใส่ Sky Boxes ลงไปที่ Main Camera หน่อยนึงเพื่อเก็บรายละเอียดของท้องฟ้า
ขั้นตอนต่อมานำตัวละครเข้าสู่ฉาก ซึ่งเจ้าตัวละครผมก็เอามาจาก Asset Store ของ Unity มาแก้ไข Texture ของตัวละครใหม่เล็กน้อย
คลิกที่ ตัวละครของเรา เพิ่ม Animation เข้าไปคือ Run ตั้งค่าให้ Automatic
ตามด้วยเพิ่ม Character Controller เข้าไปเพื่อควบคุมตัวละครที่เราจะใช้ภายหลัง
ปรับตัว Capsule ของ Character Controller ของเราให้พอดีกับตัว Model ของ ตัวละครเล็กน้อย
ทำฉากให้เลื่อนเพื่อให้เรารู้สึกเหมือนวิ่งไปข้างหน้า
ใน Tutorial นี้จะมีการเขียน Script เข้าไปซึ่ง Script นั้นจะเป็น C# ดังนั้นให้ไปสร้าง Script ที่ Project ของเราเลือกเป็น 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 ที่เราสร้างให้เรียบร้อย
ทำการ Run เกมจะพบกับผลลัพธ์ เหมือน Video ด้านล่างนี้
จะเห็นว่า ตัวอย่างของบทนี้คือการ Setup ตัว Game Worlds และแนวคิดในการเล่นของเกมประเภท Unfinished Running อย่าง Temple Run ครับ
ในบทเรียนต่อไปจะเป็นการ เก็บ แต้มเอาคะแนน ซึ่งจะเป็นเหรียญ และแต้มที่เก็บแล้วเสียคะแนนหรือ พลังชีวิตเป็นต้นไปจนถึง การสร้างฉาก Title และ Menu เกมก่อนจะเล่นเกมครับ
3 Comments