Şu anda, oyuncular herhangi bir platformdan düşebilir ve bunun bir sonucu yok. Bu bölüm, oyununuzdaki suyla aynı yükseklikte büyük görünmez bir tehlike yaratmayı adım adım açıklayacaktır. Bir oyuncu bu tehlikeye düştüğünde, sağlık durumu sıfıra düşer ve oyunun başında yeniden doğar.
Temel bir su tehlikesi oluşturma
Temel bir su tehlikesi oluşturWorkspace > World içinde, Hazards adında yeni bir klasör oluşturun.Hazards klasörü içinde, Sağlam bir Part oluşturun ve adı `Hazard` olarak değiştirin, Boyutunu 825, 1, 576 ve CFrame.Position değerini 174, -6.5, 38 olarak ayarlayın. Böylece parça, ada ve platformların etrafındaki suyu kaplar.Şeffaflık değerini 1 olarak ayarlayın, böylece parça görünmez hale gelir ve gerçek su tehlike olarak görünür; CanCollide özelliğini devre dışı bırakın, böylece oyuncular suya düşer ve Kilitli özelliğini etkinleştirerek fiziklerin onu hareket ettirmesini engelleyin.
Oyuncuların tehlikeyi ne zaman dokunduğunu algılama
Tehlike, Dokunuldu olayını dinleyen bir script yazmadığınız sürece hiçbir şey yapmaz ve oyuncunun sağlık durumunu sıfıra düşürür.
HazardService OluşturServerScriptService içinde, aşağıdaki kod ile `HazardService` adında bir Script oluşturun:```lualocal Players = game:GetService("Players")local Workspace = game:GetService("Workspace")local hazardsFolder = Workspace.World.Hazardslocal hazards = hazardsFolder:GetChildren()local function onHazardTouched(otherPart)local character = otherPart.Parentlocal player = Players:GetPlayerFromCharacter(character)if player thenlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenhumanoid.Health = 0endendendfor _, hazard in hazards dohazard.Touched:Connect(onHazardTouched)end```
HazardService, CoinService ile birçok benzerliğe sahiptir. Ancak, oyuncunun bir tehlikeye dokunduğunda sağlığı 0 olarak ayarlanır.
Oyununuza benzersiz engeller oluşturmak için tehlike nesnelerini değiştirmek, eklemek veya kaldırmaktan çekinmeyin. Hazards klasörü içinde bulundukları sürece, kod döngüsü olay işleyicisini tüm tehlikelerinize bağlar.
Oyuncu yaşam döngüsüne bağlanma
Oyuncu yaşam döngüsü, oyuncuların oyununuzda etkileşimde bulunduğu olayları temsil eder; bunlar arasında katılma, ayrılma veya yeniden doğma gibi olaylar yer alır. Her büyük yaşam döngüsü olayı için mantığı yürütmek üzere bu olaylara işleyiciler bağlamanız gerekir.
CoinService'e yaşam döngüsü işleyicileri ekleServerScriptService içinde, mevcut CoinService Scriptinin sonuna aşağıdaki kodu ekleyin (herhangi bir mevcut kodu değiştirmeyin - bunu sonrasında ekleyin):```lualocal function onPlayerAdded(player)-- Oyuncu jetonlarını 0'a sıfırlaupdatePlayerCoins(player, function(_)return 0end)player.CharacterAdded:Connect(function(character)-- WaitForChild, oyuncu döngüsünü durdurur, bu nedenle aşağıda ayrı bir iplikte yapılmalıdırtask.spawn(function()-- Bir oyuncu öldüğündecharacter:WaitForChild("Humanoid").Died:Connect(function()-- Oyuncu jetonlarını 0'a sıfırlaupdatePlayerCoins(player, function(_)return 0end)end)end)end)end-- PlayerAdded olayına bağlanmadan önce eklenen herhangi bir oyuncuyu başlatfor _, player in Players:GetPlayers() doonPlayerAdded(player)endlocal function onPlayerRemoved(player)updatePlayerCoins(player, function(_)return nilend)endPlayers.PlayerAdded:Connect(onPlayerAdded)Players.PlayerRemoving:Connect(onPlayerRemoved)```
Kod, uygun yaşam döngüsü olayları sırasında jeton miktarını sıfırlamak için işlevler tanımlar:
- Players.PlayerAdded bir oyuncu oyuna katıldığında tetiklenir ve jeton sayısını 0 olarak ayarlar.
- Player.CharacterAdded bir oyuncunun karakter modelinin dünyaya eklendiğinde tetiklenir. Bu, PlayerAdded'dan sonra gerçekleşir ve oyuncunun yeniden doğması durumunda meydana gelir.
- Humanoid.Died bir oyuncu öldüğünde tetiklenir ve jeton sayısını 0 olarak ayarlar. task.spawn() bu işlemi yürütmek için ayrı bir iplik oluşturur, böylece oyuncu yaşam döngüsünün diğer yönleri işleyebilir.
- Player.PlayerRemoved bir oyuncu oyundan ayrıldığında tetiklenir ve oyuncu durumunu temizler.
- Bu kod, oyuncuların Players.PlayerAdded olayı tetiklenmeden önce jeton toplama olasılığında bir sorun içerir ve bu durumda jeton sayıları sıfırlanır. Bu sorunu hafifletmek için kod zamanlaması veya oyuncunun karakterini başlangıçtan sonra buzlamayı düşünebilirsiniz. Ancak, bu çözümler daha karmaşık script kavramları içerir ve bu eğitimin kapsamını aşar.
Oyun Testi
Açılır menüden Test'i seçin ve Oynat'a tıklayın. Birkaç jeton toplayın, sonra suya atlayın. Karakteriniz ölmelidir ve yeniden başlangıçta doğmalıdır; jeton sayısı 0'a sıfırlanacaktır.