บทที่ 6: การสร้างเกมง่าย ๆ (Simple Game Project)
6.3 การเพิ่มระบบคะแนนและเสียง
การเพิ่มระบบคะแนนและเสียงในเกมจะช่วยให้เกมมีความสนุกและน่าสนใจมากขึ้น มาดูกันว่าการเขียนสคริปต์เพื่อเพิ่มคะแนนและการเพิ่มเสียงเมื่อเกิดเหตุการณ์ต่าง ๆ ในเกมสามารถทำได้อย่างไรค่ะ
1. การเขียนสคริปต์เพิ่มคะแนนเมื่อเก็บเหรียญ
การเก็บเหรียญแล้วเพิ่มคะแนนเป็นกลไกที่พบได้บ่อยในเกมต่าง ๆ เราจะสร้างระบบนี้โดยใช้สคริปต์ในการจัดการคะแนนและตรวจสอบการชนระหว่างตัวละครกับเหรียญ
1. การสร้าง ScoreManager Script:
-
- สร้างสคริปต์ใหม่ชื่อว่า ScoreManager.cs และใช้สคริปต์นี้ในการจัดการคะแนนของเกม
- ในสคริปต์นี้ เราจะเพิ่มคะแนนเมื่อผู้เล่นเก็บเหรียญ
ตัวอย่างโค้ด:
using UnityEngine;
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour
{
public Text scoreText; // ลิงก์ไปยัง UI ที่จะแสดงคะแนน
private int score = 0;
// เริ่มต้นเมื่อเกมเริ่ม
void Start()
{
UpdateScoreText();
}
// ฟังก์ชันเพิ่มคะแนน
public void AddScore(int value)
{
score += value;
UpdateScoreText();
}
// อัปเดตการแสดงผลคะแนน
void UpdateScoreText()
{
scoreText.text = "Score: " + score.ToString();
}
}
2. การอัปเดตสคริปต์เหรียญ:
-
- ในสคริปต์ของเหรียญ ให้เขียนโค้ดเพื่อเรียกใช้ฟังก์ชันเพิ่มคะแนนเมื่อเหรียญถูกเก็บโดยตัวละคร
ตัวอย่างโค้ด:
using UnityEngine;
public class Coin : MonoBehaviour
{
public int scoreValue = 10; // คะแนนที่ได้เมื่อเก็บเหรียญ
// ตรวจจับการชนเมื่อผู้เล่นชนกับเหรียญ
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
// เรียกใช้ฟังก์ชัน AddScore จาก ScoreManager
FindObjectOfType().AddScore(scoreValue);
// ลบเหรียญออกจากฉาก
Destroy(gameObject);
}
}
}
ในโค้ดนี้:
-
-
- เมื่อผู้เล่นชนกับเหรียญ (ซึ่งตรวจจับได้ด้วย OnTriggerEnter), ระบบจะเพิ่มคะแนนและลบเหรียญออกจากฉาก
-
3. การเชื่อมต่อ ScoreManager กับ UI:
-
- ใน Unity Editor ให้สร้าง Text UI (ไปที่ GameObject > UI > Text) เพื่อแสดงคะแนนบนหน้าจอ
- ลาก Text UI ที่สร้างขึ้นลงในช่อง scoreText ใน Inspector ของ ScoreManager
2. การเพิ่มเสียงเมื่อเกิดเหตุการณ์ต่าง ๆ ในเกม
เสียงเป็นส่วนสำคัญที่ช่วยสร้างบรรยากาศและเพิ่มความสนุกให้กับเกม เราจะเพิ่มเสียงเมื่อเกิดเหตุการณ์ต่าง ๆ เช่น เมื่อผู้เล่นเก็บเหรียญ
1. การเพิ่มเสียงใน Unity:
-
- นำไฟล์เสียงที่ต้องการใช้เข้ามาใน Unity โดยลากไฟล์เสียงลงในโฟลเดอร์ Assets
- Unity รองรับไฟล์เสียงในรูปแบบต่าง ๆ เช่น .wav, .mp3, .ogg
2. การเพิ่ม AudioSource ให้กับวัตถุ:
-
- เลือกวัตถุที่ต้องการให้มีเสียง (เช่น ตัวละครหรือเหรียญ) และใน Inspector คลิกที่ Add Component > AudioSource
- ใน AudioSource คุณสามารถตั้งค่าไฟล์เสียงที่ต้องการให้เล่น โดยลากไฟล์เสียงจาก Assets ลงในช่อง AudioClip ของ AudioSource
3. การเพิ่มเสียงเมื่อเก็บเหรียญ:
-
- ในสคริปต์ของเหรียญ เราสามารถเพิ่มโค้ดเพื่อให้เล่นเสียงเมื่อเก็บเหรียญได้
ตัวอย่างโค้ด:
using UnityEngine;
public class Coin : MonoBehaviour
{
public int scoreValue = 10; // คะแนนที่ได้เมื่อเก็บเหรียญ
public AudioClip collectSound; // เสียงที่เล่นเมื่อเก็บเหรียญ
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
// เล่นเสียงเก็บเหรียญ
AudioSource.PlayClipAtPoint(collectSound, transform.position);
// เพิ่มคะแนน
FindObjectOfType().AddScore(scoreValue);
// ลบเหรียญออกจากฉาก
Destroy(gameObject);
}
}
}
ในโค้ดนี้:
-
-
- AudioSource.PlayClipAtPoint() จะเล่นเสียงที่กำหนดเมื่อผู้เล่นเก็บเหรียญ
-
4. การเพิ่มเสียงสำหรับเหตุการณ์อื่น ๆ:
-
- คุณสามารถเพิ่มเสียงในเหตุการณ์อื่น ๆ ได้ เช่น เสียงเมื่อชนกับสิ่งกีดขวาง หรือเสียงเมื่อเกมจบ โดยใช้วิธีเดียวกันกับการเพิ่มเสียงให้กับการเก็บเหรียญ
สรุป:
- การเขียนสคริปต์เพิ่มคะแนนเมื่อเก็บเหรียญ สามารถทำได้โดยการตรวจสอบการชนระหว่างตัวละครกับเหรียญ และเรียกฟังก์ชันเพิ่มคะแนน
- การเพิ่มเสียงเมื่อเกิดเหตุการณ์ต่าง ๆ ช่วยให้เกมมีความน่าสนใจยิ่งขึ้น โดยสามารถเพิ่มเสียงในเหตุการณ์ต่าง ๆ ได้โดยการใช้ AudioSource และ PlayClipAtPoint()