Trong phần này mình sẽ hướng dẫn bạn cách thêm âm thanh khi nhấn vào các nút trên giao diện,vv.
| Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
Âm thanh
Lấy âm thanh
Để lấy âm thanh thì ở đây mình sẽ không cần đưa bạn link tải, bạn chỉ cần vô Asset lib tìm Kenney là nó sẽ ra.
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 18 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-38-07-300x205.png)
Bạn có thể chọn 1 trong 2 cái đều được.![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 19 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 15](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-38-46-300x200.png)
Rồi nhấn download để tải nó xuống.
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 20 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 16](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-39-45-300x150.png)
Tải xong rồi thì bạn nhấn vào Install để cài đặt.
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 21 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 17](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-39-54.png)
Nó sẽ hiện lên 1 giao diện hiển thị địa chỉ của addon đó rồi nhấn Install
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 22 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 18](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-40-18.png)
Sau đó 1 thư mục mới đc tạo tên addons và nó chứa âm thành mà mình vừa cài ở trong đó
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 23 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 19](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-40-46.png)
Về các file âm thanh nó cũng được ghi thêm tên đằng trước để bạn có thể nhận biết nên xài cái nào và cái nào.
Thêm vào scene
Sau khi cài đặt thành công thì mình tiến hành thêm nó vào game.
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 24 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 20](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-44-15-300x214.png)
Kiếm cho mình node AudioStreamPlayer2D![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 25 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 21](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-44-43-300x135.png)
Ở đây mình đang add vào scene Menu.
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 26 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 22](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-46-05.png)
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 27 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 23](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-46-51.png)
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 28 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 24](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-46-38.png)
Ở đây mình đang làm Audio khi nhấn vào nút Bắt đầu cho nên mình sẽ tìm sound có tên click và kéo nó vào dòng Stream của Audio Stream Player 2D.
Sau khi kéo xong thì bạn có thể gọi nó ở trong code với hàm play()
extends Control
func _on_NutBatDau_pressed():
$AudioStreamPlayer2D.play()
yield(get_tree().create_timer(0,1),"timeout")
get_tree().change_scene("res://Scences/Map/LevelMap.tscn")
pass # Replace with function body.
func _on_NutThoatGame_pressed():
get_tree().quit()
pass # Replace with function body.
Dòng code ở trên mình thêm dòng $AudioStreamPlayer2D.play() là mình sẽ chạy cái âm thanh khi bấm nút bắt đầu
yield(get_tree().create_timer(0,1),"timeout"): là mình tạo 1 cái timer với thời gin 0,1s sau khi hết 0,1s nó mới chạy lệnh change_scene(). Ở đây, mình dùng lệnh này là bởi vì khi mình nhấn chỉ thêm dòng play() rồi change_scene nó sẽ không chạy âm thanh ( tuỳ máy có máy không) nên là mình sẽ thêm lệnh yield để sau khi nó chạy âm thanh rồi mới change scene.
Bạn có thể không cần thêm yield() nếu như cái bạn muốn chạy âm thanh không cần phải change scene.
![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 29 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 25](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-01-00-09.png)
Mình sẽ làm thêm 1 cái nữa ở scene PauseMenu.![[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 30 [Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện 26](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-12-56-56.png)
Bạn thêm âm thanh vào.
Sau đó ở hàm hiện âm thanh menu mình có:
func _on_HienPauseMenu_pressed():
get_node("AudioStreamPlayer2D").play()
$PauseMenu.show()
get_tree().paused = true
pass # Replace with function body.
Rồi sau khi bạn nhấn và chạy thử sẽ thấy nó có âm thanh click khi nhấn vào.
Tổng Kết
Vậy trong phần này mình đã hướng dẫn bạn cách để thêm âm thanh vào trong game.
Câu hỏi thường gặp
Tôi tải âm thanh từ đâu?
Bạn có thể tìm và tải âm thanh miễn phí từ Kenney.nl trên AssetLib của Godot.
Làm thế nào để thêm âm thanh vào nút trong giao diện?
Thêm một nút AudioStreamPlayer2D vào scene của bạn. Kéo thả file âm thanh vào thuộc tính “Stream” của nút. Gọi hàm `play()` của nút AudioStreamPlayer2D trong hàm xử lý sự kiện nhấn nút (ví dụ: `_on_NutBatDau_pressed()`).
Tôi cần sử dụng lệnh `yield()` khi chơi âm thanh không?
Bạn chỉ cần sử dụng `yield()` nếu bạn cần đảm bảo âm thanh được phát hoàn toàn trước khi thực hiện các hành động khác, đặc biệt là khi chuyển scene. Nếu không cần chuyển scene, bạn có thể bỏ qua lệnh này.





![[Tạo 2D Platformer Game với Godot] Phần 29: Lưu và load dữ liệu game 36 [Tạo 2D Platformer Game với Godot] Phần 29: Lưu và load dữ liệu game 29](https://anonyviet.com/wp-content/uploads/2021/11/25-11-2021-04-43-13.png)
![[Tạo 2D Platformer Game với Godot] Phần 27: Mở khoá level 37 [Tạo 2D Platformer Game với Godot] Phần 27: Mở khoá level 30](https://anonyviet.com/wp-content/uploads/2021/11/24-11-2021-12-17-23.png)
![[Tạo 2D Platformer Game với Godot] Phần 25: Tạo Menu khi hết Level 39 [Tạo 2D Platformer Game với Godot] Phần 25: Tạo Menu khi hết Level 32](https://anonyviet.com/wp-content/uploads/2021/11/23-11-2021-11-13-02.png)
![[Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 40 [Tạo 2D Platformer Game với Godot] Phần 24: Tạo Pause Menu 33](https://anonyviet.com/wp-content/uploads/2021/11/22-11-2021-02-07-33-283x250.png)




