บทที่ 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()