Unity - รู้เบื้องต้นเกี่ยวกับเสียง

มีเหตุผลที่เกมให้ความสำคัญกับเสียง การเพิ่มคุณค่าทางสุนทรียภาพให้กับเกมเป็นสิ่งสำคัญมาก ตั้งแต่แรกPongหนึ่งสามารถได้ยินเสียงบี๊บและเสียงหวดจากลูกบอลที่กระทบไม้พายสลับกัน มันเป็นตัวอย่างคลื่นสี่เหลี่ยมสั้นที่เรียบง่ายในเวลานั้น แต่คุณต้องการอะไรจากปู่ของวิดีโอเกมทั้งหมด?

ในชีวิตจริงหลายสิ่งส่งผลต่อวิธีการรับรู้เสียงของคุณ ความเร็วของวัตถุชนิดของสถานการณ์และทิศทางที่มาจาก

มีหลายปัจจัยที่สามารถสร้างภาระที่ไม่จำเป็นให้กับเครื่องยนต์ของเรา แต่เราพยายามสร้างแนวคิดว่าเสียงของเราจะทำงานอย่างไรในเกมของเราและสร้างสิ่งนั้นขึ้นมา สิ่งนี้โดดเด่นเป็นพิเศษในเกม 3 มิติซึ่งมี 3 แกนให้จัดการ

ใน Unity เรามีส่วนประกอบเฉพาะสำหรับการรับรู้และเล่นเสียง ส่วนประกอบเหล่านี้ทำงานร่วมกันเพื่อสร้างระบบเสียงที่น่าเชื่อถือซึ่งให้ความรู้สึกเป็นธรรมชาติกับเกม

Unity มอบเครื่องมือและเอฟเฟกต์ที่มีประโยชน์มากมายให้เราเช่นเสียงก้องเอฟเฟกต์ Doppler การผสมและเอฟเฟกต์แบบเรียลไทม์เป็นต้นเราจะเรียนรู้เกี่ยวกับสิ่งเหล่านี้ในบทต่อ ๆ ไป

ส่วนประกอบเสียง

ในส่วนนี้เราจะเรียนรู้เกี่ยวกับองค์ประกอบหลัก 3 ส่วนที่เกี่ยวข้องกับเสียงใน Unity

แหล่งเสียง

คอมโพเนนต์ AudioSource เป็นส่วนประกอบหลักที่คุณจะเชื่อมต่อกับ GameObject เพื่อให้เล่นเสียง มันจะเล่นไฟล์AudioClip เมื่อถูกทริกเกอร์ผ่านมิกเซอร์ผ่านโค้ดหรือตามค่าเริ่มต้นเมื่อปลุก

AudioClip เป็นเพียงไฟล์เสียงที่โหลดลงใน AudioSource อาจเป็นไฟล์เสียงมาตรฐานใดก็ได้เช่น. mp3, .wav เป็นต้น AudioClip เป็นส่วนประกอบภายในตัวมันเองเช่นกัน

AudioListener

AudioListener เป็นส่วนประกอบที่ listensเพื่อเล่นเสียงทั้งหมดในฉากและโอนไปยังลำโพงของคอมพิวเตอร์ มันทำหน้าที่เหมือนไฟล์earsของเกม เสียงทั้งหมดที่คุณได้ยินอยู่ในมุมมองของการวางตำแหน่งของ AudioListener นี้ ควรมี AudioListener เพียงตัวเดียวในฉากเพื่อให้ทำงานได้อย่างถูกต้อง โดยค่าเริ่มต้นกล้องหลักจะมี Listener ติดอยู่ Listener ไม่มีคุณสมบัติเปิดเผยใด ๆ ที่นักออกแบบต้องการดูแล

ตัวกรองเสียง

เอาต์พุตของ AudioSource หรือปริมาณของ AudioListener สามารถแก้ไขได้ด้วยความช่วยเหลือของ Audio Filters สิ่งเหล่านี้เป็นส่วนประกอบเฉพาะที่สามารถเปลี่ยนเสียงสะท้อนการขับร้องการกรองและอื่น ๆ ฟิลเตอร์เฉพาะแต่ละตัวมาเป็นส่วนประกอบของตัวเองพร้อมค่าที่เปิดเผยเพื่อปรับแต่งเสียง

การเล่นเสียง

ให้เราลองสร้างปุ่มที่ส่งเสียงเมื่อมีการคลิก ในการเริ่มต้นเราจะCreate สไปรท์วงกลมแล้วทำให้เป็นสีแดง

ตอนนี้ให้เราแนบไฟล์ Audio Source กับเทพดานี้

เพื่อให้วัตถุเล่นเสียงเราต้องให้มัน ให้เราใช้เอฟเฟกต์เสียงนี้เพื่อจุดประสงค์ของเรา

http://www.orangefreesounds.com/ding-sfx/

ดาวน์โหลดเอฟเฟกต์เสียงแล้วลากลงใน Assets

เมื่อ Unity นำเข้าเนื้อหานี้เป็นไฟล์เสียงเนื้อหานั้นจะถูกแปลงเป็นไฟล์ AudioClip. ดังนั้นคุณสามารถลากคลิปเสียงนี้จากเนื้อหาไปยังช่องคลิปเสียงในแหล่งเสียงของสไปรต์ได้โดยตรง

หลังจากที่คุณลากคลิปเสียงจากเนื้อหาลงในช่องคลิปเสียงโดยตรงในแหล่งเสียงของสไปรต์อย่าลืมยกเลิกการเลือก "เล่นเมื่อตื่น" ในคุณสมบัติแหล่งเสียง การไม่ทำเช่นนั้นจะทำให้เสียงเล่นทันทีที่เกมเริ่ม

ตอนนี้ให้เราข้ามไปที่รหัสของเรา สร้างสคริปต์ใหม่ชื่อ“ BellSound” และเปิดขึ้น

เนื่องจากแหล่งที่มาของเสียงของเราถูกควบคุมผ่านรหัสเราจึงต้องได้รับการอ้างอิงถึงก่อน เราจะใช้วิธี GetComponent เหมือนเมื่อก่อน

public class BellSound : MonoBehaviour {
   AudioSource mySource;
   // Use this for initialization
   void Start () {
      mySource = GetComponent<AudioSource>();
}

ตอนนี้ให้เราตั้งค่าวิธีการตรวจจับวัตถุที่ถูกคลิก MonoBehaviour ให้วิธีที่เราต้องการในชื่อ OnMouseDown เมธอดนี้ถูกเรียกเมื่อใดก็ตามที่คลิกเมาส์ในช่วงของไฟล์collider ของ gameObject นั้น

เนื่องจากเรายังไม่ได้ติด collider เข้ากับปุ่มของเราให้เราทำตอนนี้

เราไม่จำเป็นต้องมี Rigidbody สำหรับคนนี้ เราไม่จำเป็นต้องเข้าถึง collider นี้ด้วยรหัส มันจะต้องมีเพื่อให้วิธีการทำงาน

ให้เราทดสอบวิธีการและดูว่าใช้งานได้หรือไม่ เขียนรหัสต่อไปนี้ในสคริปต์ของคุณและแนบไปกับปุ่ม

void OnMouseDown() {
   Debug.Log(“Clicked!”);
}

เมื่อคุณบันทึกสคริปต์และแนบแล้วให้เล่นเกม การคลิกที่ปุ่มควรทำให้เกิดข้อความในคอนโซล

ตอนนี้คุณอยู่ห่างจากการเล่นเสียงเพียงขั้นตอนเดียว สิ่งที่คุณต้องทำตอนนี้คือโทรไปที่ไฟล์Play วิธีการในอินสแตนซ์แหล่งเสียง

void OnMouseDown() {
   mySource.Play();
}

บันทึกสคริปต์ของคุณและเรียกใช้ในเกม คลิกที่ปุ่มและคุณจะได้ยินเสียงเล่น!

Note- พิจารณาสร้างปุ่มที่ขึ้นในระดับเสียงทุกครั้งที่คุณคลิกที่มัน ใช้mySource.pitch และเคาน์เตอร์และดูว่าคุณสามารถคิดออกหรือไม่)