ตอนสุดท้ายของ Workshop การเขียนเกมบน Unity 3D แนวเกม Temple Run ซึ่งในบทเรียนนี้จะเป็นการเรียนรู้เกี่ยวกับการเปลี่ยน Scene และการใส่เสียง Audio ลงในเกมแบบ
บทเรียนก่อนหน้านี้ให้ศึกษาอย่างถี่ถ้วนก่อนจะจบบทเรียนนี้
- Workshop เขียนเกมแนว Temple Run ด้วย Unity 3D ตอนที่ 1
- Workshop เขียนเกมแนว Temple Run ด้วย Unity 3D ตอนที่ 2
- Workshop เขียนเกมแนว Temple Run ด้วย Unity 3D ตอนที่ 3
- Workshop เขียนเกมแนว Temple Run ด้วย Unity 3D ตอนที่ 4
- Workshop เขียนเกมแนว Temple Run ด้วย Unity 3D ตอนที่ 5
ในบทเรียนนี้จะเป็นการพัฒนาต่อให้เกมนั้นเสร็จสมบูรณ์สำหรับ Game Play ทั้งหมด สิ่งที่ควรจะเพิ่มเติมนั่นคือเรื่องของ Audio หรือเสียงที่เราจะใช้สำหรับเกม เช่นเสียงกระโดด เสียงเอฟเฟคเมื่อเก็บเหรียญ เสียงเมื่อเราวิ่งชนศัตรู และ ดนตรีประกอบฉากครับ ดังนั้นให้เราไปหาเสียงมาใช้กันดีกว่า
เสียง Effect และดนตรีประกอบฉาก ผมหาจากเว็บไซต์เหล่านี้
เมื่อได้ไฟล์เสียงทั้งหมดมาแล้วให้เอาไปวางที่ Project Tab ส่วนของ Assets ได้เลยครับ
ให้เราไปที่ Hierarchy Tab สร้าง GameObject ใหม่ขึ้นมาเป็น Audio source ขึ้นมา 3 ตัวตั้งชื่อว่า COIN, JUMP, DAMAGE
ให้เราทำการเพิ่ม Param บน Game Object ทั้ง COIN, JUMP และ DAMAGE ให้ดูที่ Inspector ทีละตัว ลากไฟล์เสียงไปใส่บน Source ของ GameObject เหล่านั้นให้เรียบร้อย
public GameLogic control; CharacterController controller; bool isGrounded= false; public float PlayerSpeed = 6.0f; public float PlayerJumpSpeed = 8.0f; public float gravity = 20.0f; private Vector3 PlayerMoveDirection = Vector3.zero; //เพิ่มตรงนี้ public AudioSource getitemSound; public AudioSource jumpingSound; public AudioSource enemySound;
เลือก Play on Awake ออกครับ ทำทั้งหมดทั้ง COIN, JUMP และ DAMAGE ต่อจากนั้นกลับไปแก้ไข Player.cs โดยการคลิกตัวละครให้ใส่ Code ใหม่ตามนี้
โดยเรียกใช้ฟังก์ชันตอนกระโดดให้แทรคำสั่ง Play(); ส่วนนี้
if (Input.GetButton ("Jump")) { animation.Stop("run"); animation.Play("Attack"); PlayerMoveDirection.y = PlayerJumpSpeed; //เพิ่ม jumpingSound.Play(); }
เรียกฟังก์ชัน เมื่อได้รับ Item แล้วมีเสียงดังนี้
if(other.gameObject.name == "Items(Clone)") { //Items control.GetItems(); getitemSound.Play(); }
เช่นกันเมื่อชนศัตรู
else if(other.gameObject.name == "Monster(Clone)") { //Monster control.CrashMonster(); animation.Stop("run"); animation.Play("Dead"); enemySound.Play (); }
กลับไปที่ Inspector Window เราจะเห็นช่องให้ใส่ Parameter ดังนี้
ให้ทำการลาก GameObject ที่เป็น Audio Source ที่เราสร้างไว้ทั้งไปหมดไปใส่ครับ
ต่อมาคือ BG Music หรือเพลงประกอบฉาก ให้ไปที่ Main Camera ก่อนแล้วไปที่ Tool Bar เลือก Component -> Audio -> Audio Source
หลังจากนั้นลากเพลงไปวางที่ Audio Source เลยครับ และเลือก Play on Awake และ Loop ทันที
ทดสอบเกมก็จะเห็นว่าเราเล่นเกมได้ ปรกติพร้อม Music BG และ Sound Effect แล้ว
ต่อมาเราจะทำหน้า Title ของเกมครับ ให้ไปที่ File แล้ว Create New Scene ขึ้นมาชื่อว่า “start”
จัดตัวละคร และ Terrain สำหรับฉากของเราให้ลงตัว ปรับ Camera ให้เป็นการส่องไปข้างหน้าให้ดีครับ
หลังจากนั้นก็สร้าง GameObject ขึ้นมาใหม่
สร้าง Script CS ขึ้นมาว่า ClickStart เขียนคำสั่งดังนี้
public class ClickStart : MonoBehaviour { public GUISkin NormalSkin; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnGUI() { GUI.skin=NormalSkin; //Restart Game if (GUI.Button(new Rect(Screen.width/4+10, Screen.height/4+Screen.height/10+50, Screen.width/2-20, Screen.height/10), "START GAME")){ Application.LoadLevel("game"); } //Create List Menu if (GUI.Button(new Rect(Screen.width/4+10, Screen.height/4+2*Screen.height/10+60, Screen.width/2-20, Screen.height/10), "CREDIT")){ //Application.LoadLevel(1); } //Exit if (GUI.Button(new Rect(Screen.width/4+10, Screen.height/4+3*Screen.height/10+90, Screen.width/2-20, Screen.height/10), "EXIT GAME")){ Application.Quit(); } } }
จะเห็นว่าเป็น GUI ซะส่วนใหญ่ แต่จะมี คำสั่งการเปลี่ยน Scene อยู่นั่นคือ
Application.LoadLevel("game");
ให้ลองเอาไปใช้กับ Scene ของเกมนะครับ สุดท้ายก็ Main Camera ของ Scene Start ที่สร้างมาให้เราลองสร้าง Audio Source ไว้เป็นการเล่นเพลงของฉาก Title เกมครับ
ทดลอง Run เกมดู เรียบร้อย
ถือว่าบทความนี้เป็นการจบ Workshop เต็มรูปแบบจริงๆ ครับ สามารถเข้าไปเล่นกันได้ที่
https://www.daydev.com/demo/unity/
หรือดาวน์โหลด Project Source Code ได้ที่นี่ครับhttps://drive.google.com/folderview?id=0B1kwQ1abTIRrZTBMaS1CY2xVQWc&usp=sharing (58Mb)