Oyuncu tehlikeleri oluşturma

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.


Ş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ştur

Workspace > 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ştur

ServerScriptService içinde, aşağıdaki kod ile `HazardService` adında bir Script oluşturun:
```lua
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local hazardsFolder = Workspace.World.Hazards
local hazards = hazardsFolder:GetChildren()
local function onHazardTouched(otherPart)
local character = otherPart.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
end
for _, hazard in hazards do
hazard.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 ekle

ServerScriptService içinde, mevcut CoinService Scriptinin sonuna aşağıdaki kodu ekleyin (herhangi bir mevcut kodu değiştirmeyin - bunu sonrasında ekleyin):
```lua
local function onPlayerAdded(player)
-- Oyuncu jetonlarını 0'a sıfırla
updatePlayerCoins(player, function(_)
return 0
end)
player.CharacterAdded:Connect(function(character)
-- WaitForChild, oyuncu döngüsünü durdurur, bu nedenle aşağıda ayrı bir iplikte yapılmalıdır
task.spawn(function()
-- Bir oyuncu öldüğünde
character:WaitForChild("Humanoid").Died:Connect(function()
-- Oyuncu jetonlarını 0'a sıfırla
updatePlayerCoins(player, function(_)
return 0
end)
end)
end)
end)
end
-- PlayerAdded olayına bağlanmadan önce eklenen herhangi bir oyuncuyu başlat
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
local function onPlayerRemoved(player)
updatePlayerCoins(player, function(_)
return nil
end)
end
Players.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.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.