Ngoài âm nhạc nền, âm thanh trong trò chơi có thể cải thiện trải nghiệm của một người chơi. Hướng dẫn này sẽ xem xét hai loại âm thanh trong trò chơi: positional và feedback âm thanh.
Đối với ví dụ đầu tiên, bạn sẽ tạo một âm thanh địa lý cho một thác nước. Trong ví dụ thứ hai, một script sẽ được sử dụng để chơi một jingle khi người chơi chạm vào một thứ thu thập.
Âm thanh vị trí
Khi một mặt tiền âm thanh đối tượng được gắn vào một phần hoặc kết nối, nó trở nên có vị trí. Tiếng audio sẽ phát ra từ vị trí của nó và lớn hơn khi người chơi đến gần, như trong trường hợp này là thác nước này.
Tạo một âm thanh
Ở bất kỳ phần nào bạn muốn, tạo một đối tượng Âm thanh mới có tên là WaterfallSound .
Trong các thuộc tính, tìm thấy SoundId và thay đổi nó thành khu vực này thác nước: rbxassetid://6564308795 .
Đối với lượt chơi liên tục khi trò chơi bắt đầu, bật Chơi và Looped để trở thành trên .
Thử nghiệm trò chơi để xác nhận bạn đã nghe khu vực thác nước.
Điều chỉnh khoảng cách âm thanh
Lưu ý khi thử nghiệm, âm thanh ngay lập tức, ngay cả khi người chơi đang xa mục tiêu. Sử dụng các đặc tính cuộn-off, bạn có thể điều chỉnh khoảng cách mà một người chơi nghe thấy một âm thanh để tạo hiệu ứng mờ dần.
Đổi RollOffMaxDistance để 30 . Đổi chỉ số này được đo bằng studs.
Đối với một mời tàn nhẹ hơn, hãy thay đổi RollOffMode để InverseTapered . Điều này làm cho cảm giác tiếp cận âm thanh giảm xuống.
Chạy dự án. Thông báo là âm thanh chỉ được nghe gần mục tiêu.
Tối ưu hóa cuộn dưới
Tùy theo nhu cầu của bạn, bạn có thể muốn điều chỉnh các thuộc tính khác nhau cho các hiệu ứng đặc biệt hoặc tăng cường sự thực tế. Xem các thuộc tính sau đây:
- RollOffMinDistance - Khoảng cách tối thiểu (in studs) mà một âm thanh giảm trong khối lượng.
- SoundGroup - Được sử dụng để điều chỉnh và cân bằng âm lượng giữa các nhóm âm thanh, chẳng hạn như nhạc nền và hiệu ứng trong trò chơi.
Âm thanh phản hồi
Âm thanh có thể được phát trên lệnh bằng cách sử dụng các tập lệnh. Bạn có thể kết nối âm thanh với các sự kiện, chẳng hạn như người chơi chạm vào một phần hoặc tương tác với một menu. Ở đây, bạn sẽ tạo một tập lệnh chơi một cái chuông mỗi khi người chơi chạm vào các đố
Tùy chỉnh thu nhập
Phần còn lại của hướng dẫn này sử dụng một mô hình đã định. Mô hình này bao gồm các bộ phận và tập lệnh để người chơi có thể thu thập đá quý.
- Trong một trình duyệt, mở trang Thu thập đá quý Model và nhấp vào nút Nhận .
- Trong Studio, đi đến Trang chủ tab và nhấp vào Hộp công cụ.
- Trong cửa sổ Toolbox, hãy nhấp vào nút Inventory . Sau đó, hãy đảm bảo rằng mục dưới cuộn dây ở My Models .
- Chọn mô hình Đá quý Có thể thu thập để thêm vào trò chơi.
Trong SoundService , tạo một âm thanh mới có tên là FeedbackSound .
Trong FeedbackSound, set the SoundId to rbxassetid://4110925712 - SoundId của chuông đơn giản được tải từ trang mô hình.
Cài đặt Skript
Trong StarterPlayer > StarterPlayerScripts , tạo một mô-đun mới tên là CollectableSounds .
Mã bên dưới sẽ thiết lập chức năng partTouched khi người chơi chạm vào một vật phẩm có thể thu thập. Bắt chức năng này vào mã của bạn.
local pickupObjects = workspace.Collectables.Objectslocal objectsArray = pickupObjects:GetChildren()local function partTouched(otherPart, objectPart)local whichCharacter = otherPart.Parentlocal humanoid = whichCharacter:FindFirstChildWhichIsA("Humanoid")if humanoid and objectPart.CanCollide == true thenendend-- Làm cho mọi phần của đối tượng đến chức năng cảm ứng để nó hoạt động trên tất cả các phầnfor objectIndex = 1, #objectsArray dolocal objectPart = objectsArray[objectIndex]objectPart.Touched:Connect(function(otherPart)partTouched(otherPart, objectPart)end)end
Chơi một âm thanh
Tạo một biến cho SoundService , sau đó là một biến khác để lưu âm thanh phản hồi .
local pickupObjects = workspace.Collectables.Objectslocal objectsArray = pickupObjects:GetChildren()local SoundService = game:GetService("SoundService")local feedbackSound = SoundService:FindFirstChild("FeedbackSound")local function partTouched(otherPart, objectPart)Để chơi chuông, tìm chức năng partTouched . Trong câu if, gọi feedbackSound:Play() để chơi âm thanh.
local function partTouched(otherPart, objectPart)local whichCharacter = otherPart.Parentlocal humanoid = whichCharacter:FindFirstChildWhichIsA("Humanoid")-- Chơi âm thanh, một khi hoàn thành, hủy diệt mục đíchif humanoid and objectPart.CanCollide == true thenfeedbackSound:Play()endendThử nghiệm trò chơi để xác nhận rằng khi người chơi chạm vào một vật phẩm thu thập, nó cả hai biến mất và phát ra một âm thanh.