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 และเคาน์เตอร์และดูว่าคุณสามารถคิดออกหรือไม่)