[Tạo 2D Platformer Game với Godot] Phần 28: Thêm âm thanh giao diện
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.
Â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.
Bạn có thể chọn 1 trong 2 cái đều được.
Rồi nhấn download để tải nó xuống.
Tải xong rồi thì bạn nhấn vào Install để cài đặt.
Nó sẽ hiện lên 1 giao diện hiển thị địa chỉ của addon đó rồi nhấn Install
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 đó
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.
Kiếm cho mình node AudioStreamPlayer2D
Ở đây mình đang add vào scene Menu.
Ở đâ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.
Mình sẽ làm thêm 1 cái nữa ở scene PauseMenu.
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.