Arka plan müziği dışında, oyun içi sesler oyuncu deneyimini artırabilir. Bu öğretici iki oyun içi ses türüne odaklanacaktır: pozisyon ve geri bildirim sesleri.
İlk örnek için bir su kaskadesi için bir pozisyonlu ses oluşturacaksınız. İkinci örnek için, bir oyuncu bir toplayıcıyla ilgilendiğinde çalınan bir jingle oynatacaksınız.
Pozisyon Sesleri
Bir Ses nesnesi bir parçaya veya bağlantıya eşlenirse, onun konumu değiştirilmiş olur ve oyuncular yaklaştıkça, bu su kaskadesi gibi, daha gürültülü bir ses çıkarır.
Bir Ses Oluştur
Herhangi bir istenen bölümde, Su KadınıSoundı adında yeni bir Ses nesnesi oluşturun.
Özelliklerde, SoundId bulun ve bu su kaskadı ortamına değiştirin: rbxassetid://6564308795 .
Oyun başladığında sürekli oynatmak için, şunları çevirin Oynama ve Looped çünkü açık .
Su kaskadesi ortamını duyduğunuzu onaylamak için oyunu test edin.
Ses Mesafesini Ayarla
Test sırasında, ses derhal çalıştırılır ve oyuncu oyundan uzaktaysa bile fark etmez. Roll-off özelliklerini kullanarak, bir oyuncunun bir sesi duyduğunu görüntüleyebilirsiniz. Bu, solgun efektler oluşturmak için mesafeyi değiştirebilirsiniz.
Değerleri RollOffMaxDistance 'e değiştirin. Bu özellik 30 olarak ölçülür.
Daha düz bir solgunluk için, RollOffMode 'yu InverseTapered 'e değiştirin. Bu, sese daha az şok verir.
Projeyi başlatın. Sesin sadece nesnin yakınında duyulduğunu fark edin.
Nitelikli Roll Off'ı
İhtiyaçlarınıza bağlı olarak, özel efektler veya artırılmış gerçeklik için farklı özellikleri ayarlamak isteyebilirsiniz. Aşağıdaki özellikleri görün:
- RollOffMinDistance - En düşük mesafe (in studs) bir ses azalır.
- SoundGroup - Sesler arasındaki hacim ayarlarını ve dengeyi ayarlar, örneğin arka plan müziği ve oyun içi efektler.
Geri bildirim sesleri
Sesler, komutlar kullanılarak çalıştırılabilir. Sesleri, oyuncuların bir parçaya dokunması veya menüyle etkileşim kurması gibi olaylara bağlayabilirsiniz. Burada, oyuncuların toplayıcı nesneleri dokunmasından herhangi bir zaman çalan bir senaryo oluşturursunuz.
Koleksiyonları Oluştur
Bu öğretimin geri kalanında, öğeler ve kaynak kodları kullanılır. Bu kodlar, oyuncuların mücevher toplayabileceği bölümleri ve kaynak kodlarını içerir.
- Bir tarayıcıda, Toplanabilir Mücevher Modelleri sayfasını aç ve Elde Et düğmesine tıkla.
- Stüdyo'da Görüntü sekmesine gidin ve Araç Kutusu üzerine tıklayın.
- Araç Kutusu penceresinde, Envanter düğmesine tıklayın. Sonra, dropdown'ın My Models 'de olduğundan emin olun.
- oyuneklemek için Toplanabilir Mücevherleri Toplama Modeli seçin.
In SoundService , yeni bir Ses oluştur ve isminde FeedbackSound olarak adlandır.
In FeedbackSound, SoundId 'yi rbxassetid://4110925712 - model sayfasından indirilen basit çanın SoundId'si ile ayarlar.
Script'i Yükle
In Başlangıç Oyuncusu > StarterPlayerScripts , yeni bir yerel script oluşturulur CollectableSounds .
Aşağıdaki kod, partTouched işlevini herhangi bir toplayucuya dokunulduğunda çalışacaktır. Kodu kendi kodunuza kopyalayı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-- Her nesneyi dokunma işlevine bağlayarak tüm nesnelerde çalışırfor objectIndex = 1, #objectsArray dolocal objectPart = objectsArray[objectIndex]objectPart.Touched:Connect(function(otherPart)partTouched(otherPart, objectPart)end)end
Bir Ses Oynat
SoundService için bir değişken oluşturun, sonra geri bildirim sesini depolamak için başka bir değişken.
local pickupObjects = workspace.Collectables.Objectslocal objectsArray = pickupObjects:GetChildren()local SoundService = game:GetService("SoundService")local feedbackSound = SoundService:FindFirstChild("FeedbackSound")local function partTouched(otherPart, objectPart)Çalmak için, işlevi partTouched bulun. if ifadesi içinde, sesi çalmak için feedbackSound:Play() çağır.
local function partTouched(otherPart, objectPart)local whichCharacter = otherPart.Parentlocal humanoid = whichCharacter:FindFirstChildWhichIsA("Humanoid")-- Sesi çal, bir kez bitti, nesneyi yok etif humanoid and objectPart.CanCollide == true thenfeedbackSound:Play()endendOyunu test etmek, oyuncunun bir toplayıcıyı dokunduğunda her ikisi de kaybolduğunu ve bir ses çaldığını onaylamak için.