Unity - Giới thiệu về Âm thanh

Có một lý do khiến trò chơi chú trọng vào âm thanh; nó là khá quan trọng để tăng giá trị thẩm mỹ cho trò chơi. Ngay từ lần đầu tiênPong, người ta có thể nghe thấy tiếng bíp và tiếng kêu từ quả bóng chạm vào mái chèo xen kẽ. Đó là một mẫu sóng vuông ngắn thực sự đơn giản vào thời điểm đó, nhưng bạn còn muốn gì hơn nữa từ ông tổ của tất cả các trò chơi điện tử?

Trong cuộc sống thực, nhiều thứ ảnh hưởng đến cách bạn cảm nhận âm thanh; tốc độ của đối tượng, loại kịch bản và nó đến từ hướng nào.

Có một số yếu tố có thể tạo ra tải không cần thiết trên động cơ của chúng tôi. Thay vào đó, chúng tôi cố gắng tạo ra ý tưởng về cách âm thanh của chúng tôi sẽ hoạt động trong trò chơi của chúng tôi và xây dựng xung quanh điều đó. Điều này trở nên đặc biệt nổi bật trong các trò chơi 3D, nơi có 3 trục để giải quyết.

Trong Unity, chúng tôi có các thành phần chuyên dụng để cảm nhận và phát lại âm thanh. Các thành phần này kết hợp với nhau để tạo ra một hệ thống âm thanh đáng tin cậy, mang lại cảm giác tự nhiên cho trò chơi.

Unity cung cấp cho chúng ta một loạt các công cụ và hiệu ứng hữu ích như reverb, hiệu ứng Doppler, hiệu ứng và trộn thời gian thực, v.v. Chúng ta sẽ tìm hiểu về những công cụ này trong các chương tiếp theo.

Các thành phần âm thanh

Trong phần này, chúng ta sẽ tìm hiểu về 3 thành phần chính liên quan đến âm thanh trong Unity.

Nguồn âm thanh

Thành phần Nguồn âm thanh là thành phần chính mà bạn sẽ gắn vào GameObject để làm cho nó phát âm thanh. Nó sẽ phát lại mộtAudioClip khi được kích hoạt thông qua bộ trộn, thông qua mã hoặc theo mặc định, khi nó hoạt động.

AudioClip chỉ đơn giản là một tệp âm thanh được tải vào Nguồn âm thanh. Nó có thể là bất kỳ tệp âm thanh tiêu chuẩn nào, chẳng hạn như .mp3, .wav, v.v. AudioClip cũng là một thành phần trong chính nó.

AudioListener

AudioListener là thành phần listenssang tất cả âm thanh đang phát trong cảnh và chuyển nó đến loa của máy tính. Nó hoạt động giống nhưearscủa trò chơi. Tất cả âm thanh bạn nghe đều dựa trên định vị của AudioListener này. Chỉ nên có một AudioListener để nó hoạt động bình thường. Theo mặc định, camera chính có Listener được gắn vào. Listener không có bất kỳ thuộc tính nào mà nhà thiết kế muốn quan tâm.

Bộ lọc âm thanh

Đầu ra của Nguồn âm thanh hoặc đầu vào của Trình nghe âm thanh có thể được sửa đổi với sự trợ giúp của Bộ lọc âm thanh. Đây là những thành phần cụ thể có thể thay đổi hồi âm, điệp khúc, lọc, v.v. Mỗi bộ lọc cụ thể đi kèm như một thành phần riêng của nó với các giá trị hiển thị để điều chỉnh âm thanh của nó.

Phát âm thanh

Chúng ta hãy thử tạo một nút phát âm thanh khi nó được nhấp vào. Để bắt đầu, chúng tôi sẽCreate a Hình tròn, và làm cho nó có màu đỏ.

Bây giờ, hãy để chúng tôi đính kèm Audio Source cho sprite này.

Để đối tượng phát âm thanh, chúng ta phải cung cấp cho nó một âm thanh. Hãy để chúng tôi sử dụng hiệu ứng âm thanh này cho mục đích của chúng tôi.

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

Tải xuống hiệu ứng âm thanh và kéo nó vào Nội dung.

Khi Unity nhập nội dung này dưới dạng tệp âm thanh, nó sẽ tự động được chuyển đổi thành AudioClip. Do đó, bạn có thể kéo đoạn âm thanh này từ Nội dung trực tiếp vào khe Đoạn âm thanh trong Nguồn âm thanh của sprite của chúng tôi.

Sau khi bạn kéo đoạn âm thanh từ Nội dung trực tiếp vào khe Đoạn âm thanh trong Nguồn âm thanh của sprite của chúng tôi, hãy nhớ bỏ chọn “Phát khi thức tỉnh” trong thuộc tính Nguồn âm thanh; không làm như vậy sẽ làm cho âm thanh phát ngay khi trò chơi bắt đầu.

Bây giờ, chúng ta hãy xem mã của chúng ta. Tạo một tập lệnh mới có tên “BellSound” và mở nó lên.

Vì Nguồn âm thanh của chúng tôi được kiểm soát thông qua mã, nên trước tiên chúng tôi muốn tham chiếu đến nó. Chúng tôi sẽ sử dụng phương thức GetComponent như trước đây.

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

Bây giờ, chúng ta hãy thiết lập phương thức để phát hiện đối tượng đang được nhấp. MonoBehaviour chỉ cung cấp cho chúng tôi phương pháp chúng tôi cần cho nó, có tên là OnMouseDown. Phương thức được gọi bất cứ khi nào con chuột nhấp trong phạm vicollider của gameObject đó.

Vì chúng tôi chưa gắn máy va chạm vào nút của mình, hãy để chúng tôi làm như vậy ngay bây giờ.

Chúng tôi sẽ không cần một Rigidbody cho cái này; chúng ta cũng không cần phải truy cập máy va chạm này bằng mã. Nó chỉ phải ở đó để phương pháp hoạt động.

Hãy để chúng tôi kiểm tra phương pháp và xem nó có hoạt động không. Viết đoạn mã sau vào tập lệnh của bạn và đính kèm vào nút.

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

Sau khi bạn lưu tập lệnh và đính kèm, hãy chơi trò chơi. Nhấp vào nút sẽ xuất hiện một thông báo trong Bảng điều khiển.

Bây giờ bạn chỉ còn một bước nữa để phát âm thanh. Tất cả những gì bạn phải làm bây giờ là gọiPlay trong phiên bản Nguồn âm thanh.

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

Lưu tập lệnh của bạn và chạy nó trong trò chơi. Nhấp vào nút và bạn sẽ nghe thấy âm thanh phát ra!

Note- Cân nhắc tạo một nút cao độ mỗi khi bạn nhấp vào nó. Sử dụngmySource.pitch và một bộ đếm và xem liệu bạn có thể tìm ra nó không.)