In Scripting'e Giriş, bir oyunda zamanla döngü içinde değişiklikler yapmayı öğrendiniz. Peki ya kullanıcı davranışına dayalı değişiklikler yapmak isterseniz? Bu eğitimde, kullanıcıların üzerine bastığında öldüğü ölümcül bir lav zemin nasıl yapılacağını öğreneceksiniz.
Kurulum
Dünyanızda ölümcül lavı koymak için bir yere ihtiyacınız var. Eğer Scripting'e Giriş kursunu takip ettiyseniz, lav zemin kaybolan platformların kapladığı boşluğa güzel bir şekilde oturacaktır.
Bir Part ekleyin ve dünyanızda yerine yerleştirin. Adını LavaFloor olarak belirleyin.
Zemin alanını kaplayacak şekilde boyutunu ayarlayın.

Zeminin lav gibi görünmesi için Material özelliğini Neon ve Color özelliğini turuncu bir ton olarak ayarlayın.


LavaFloor parçasına bir Script ekleyin ve adını Kill olarak değiştirin.

Varsayılan kodu kaldırın ve lav için bir değişken oluşturun.
local lava = script.Parent
Bir olaya bağlanın
Kullanıcının lavı ne zaman dokunduğunu tespit etmek için bir olay kullanın. Her parçanın, bir şey ona dokunduğunda tetiklenen bir Touched olayı vardır. Bu olaya bağlanarak, tetiklendiğinde çalışacak bir fonksiyon yazabilirsiniz.
kill adında yeni bir fonksiyon tanımlayın.
Lav nesnesinin Touched olayına bir nokta ile erişin, tıpkı bir özellik gibi: lava.Touched.
Touched olayında Connect fonksiyonunu çağırın ve kill() fonksiyonunu, parça dokunduğunda çağrılacak fonksiyon olarak geçirin.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
kill fonksiyonunda yazdığınız herhangi bir kod, artık bir şey lav ile temas ettiğinde çalışacaktır. Connect fonksiyonu için bir nokta değil, bir noktalı virgül kullanıldığını unutmayın - bu noktada nedenini merak etmeyin, sadece farkı hatırlayın.
Temas eden parçayı alın
Kullanıcıyı öldürmek için, fonksiyonun o kullanıcıyla ilişkili bir nesneye ihtiyacı olacak. Bir parçanın Touched olayı, ona dokunan "diğer parçayı" sağlayabilir - ancak bunu bir parametre yaparak talep etmeniz gerekir.
Parametreler, bir fonksiyonun çağrıldığında ne almayı beklediğinin tanımlarıdır. Bir parametre, bir fonksiyonda herhangi bir başka değişken gibi kullanılabilir. Bir parametreye bilgi geçmek için, fonksiyon çağrıldığında parantez içinde dahil edebilirsiniz. Parametreler, bir fonksiyonun ilk satırındaki parantez içinde tanımlanır. kill fonksiyonu için otherPart adında bir parametre oluşturun.
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)kill fonksiyonu çağrıldığında, otherPart parametresi lav zeminine dokunan parçayı temsil edecek ve fonksiyonda yazacağınız kod bunu kullanabilecektir.
Karakter ve humanoid
Bir kullanıcı lavı dokunduğunda, Roblox o kullanıcının dokunan belirli vücut parçasını tespit edebilir, örneğin sol bacak veya sağ ayak. Bu parça, kullanıcının Karakter modelinde bulunur ve bu model, oyundaki kullanıcının avatarını oluşturan tüm nesneleri içerir, bunlar arasında:
- Kullanıcının başı, uzuvları ve gövdesi gibi bireysel vücut parçaları.
- Kullanıcının giydiği herhangi bir kıyafet ve aksesuar.
- Kullanıcıyla ilgili birçok özelliği içeren özel bir nesne olan Humanoid, kullanıcının sağlığı da dahil.
- Kullanıcının hareketini kontrol eden HumanoidRootPart.
Daha önce belirtildiği gibi, lavla temas eden herhangi bir vücut parçası Karakter modelinin bir parçasıdır, bu nedenle o karaktere otherPart.Parent ile erişebilirsiniz. Lav zeminine dokunan parçanın ebeveynini saklamak için bir değişken oluşturun.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)Karakter modelinden, kullanıcıyı öldürmek için Humanoid nesnesine erişmeniz gerekecek. Bunu FindFirstChild() fonksiyonu ile yapabilirsiniz - sadece aradığınız şeyin adını geçirin ve o nesnede bulduğu ilk eşleşen çocuğu sağlar. partParent değişkeninde FindFirstChild() çağrısını "Humanoid" çocuğunu bulmak için yapın ve sonucu humanoid adında yeni bir değişkende saklayın.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)Humanoid'i kontrol et
Humanoid'in bulunup bulunmadığını kolayca bir if ifadesi ile kontrol edebilirsiniz. Bir if ifadesindeki kod, yalnızca ilk satırda tanımlanan koşul doğruysa çalışır.
Gelecek kurslarda karşılaşacağınız daha karmaşık koşullar oluşturmak için kullanılabilecek çeşitli operatörler vardır - şimdilik, sadece humanoid değişkenini oraya koyun. humanoid koşulu ile bir if ifadesi oluşturun.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)Karakter sağlığını ayarlayın
Artık Humanoid kontrol edildiğine göre, özellikleri değiştirilebilir. Eğer Health özelliğini 0 olarak ayarlarsanız, ilişkili Karakter ölür. If ifadesinin gövdesinde, humanoid'in Health özelliğini 0 olarak ayarlayın.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)Bununla birlikte, lav zeminimiz tamamlandı! Oyununuzu test edin ve ölümcül lavınızın kullanıcıları temas ettiğinde başarıyla öldürdüğünü görmelisiniz. Lavınızı bir obby'de ekstra bir zorluk olarak veya bir dünya için bir sınır olarak kullanmayı deneyin.
Nihai kod
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)