Butonlar, oyuncuların yeni alanları açmasına, puan vermesine ve hazineyi ortaya çıkarmasına olanak tanır. Bir oyuncu bir butona dokunduğunda, etkileşimde bulunulduğunu bildirmek için bazı geri bildirimler vermelidir; örneğin, renk değiştirmek veya ses çıkarmak gibi.
Bu örnekte, buton bir köprüyü etkinleştirmek için kullanılacaktır. Butona basıldığında, yeşil olacak ve oyuncular köprüyü kullanabilecektir. Eğer oyuncu butona basmamışsa, köprünün üzerinde yürümeye çalıştıklarında köprüden düşeceklerdir.
Bir köprü yapın
Öncelikle köprüyü kurarak başlayın.
Oyuncuların bir köprüye ihtiyaç duyacağı bir alan oluşturun.
Köprü için bir parça oluşturun ve adını Köprü olarak değiştirin.
Köprüyü seçin, Özellikler penceresinde:
- Şeffaflık değerini .5 olarak değiştirin. Şeffaflık için, 0 görünür, 1 görünmezdir.
- Sabit seçeneğini işaretleyin.
- Çarpışabilir seçeneğini kaldırın.
Oyunu test ettiğinizde, köprü bulanık görünmeli ve insanlar henüz üzerinde yürüyememelidir.

Butonu oluşturun
Artık köprü kurulduğuna göre, butonu oluşturun.
Buton adında yeni bir parça oluşturun.
Butonun rengini kırmızıya değiştirin.
Butonu Sabit yapın.
Butonu, biraz havada duracak şekilde hareket ettirin ve hiçbir şeye dokunmadığından emin olun. Bu, Dokunuldu olayının yanlışlıkla tetiklenmemesini sağlamak içindir.

Butonu etkileşimli hale getirin
Bu sefer, Dokunuldu olayını bir tuzak oluşturmak için kullanmak yerine, köprüyü kullanılabilir hale getiren bir buton oluşturmak için kullanacaksınız. Köprüyü çarpışabilir hale getirmek için, bir oyuncu butona dokunduğunda çalışan özel bir işlev içinde bridge.CanCollide = true kodunu kullanın. Aşağıdaki adımları tamamlamak için gereken her şeyi biliyorsunuz.
Kod çözümüne bakmadan önce kendiniz çözmeye çalışın.
- Butona KöprüyüEtkinleştir adında yeni bir script ekleyin.
- Merhaba Dünyayı silin.
- Köprü ve buton için değişkenler oluşturun.
- Butona dokunulduğunda aşağıdakileri yapan bir yerel işlev oluşturun:
- "buton dokunuldu" yazdırın.
- Dokunulduğunda butonun rengini kırmızıdan yeşile değiştirin.
- Köprünün şeffaflığını 0 yaparak görünür hale getirin.
- bridge.CanCollide = true kodunu kullanarak köprüyü kullanılabilir hale getirin.
- İşlevi butonun Dokunuldu olayına bağlayın.
- Scripti test edin ve butona dokunulduğunda köprünün göründüğünden emin olun.
Kod Çözümü Aşağıda bir olası kod çözümü bulunmaktadır.
-- Bu scripti butona ekleyin
-- Butona bir şey dokunduğunda butonu yeşil yapar.
local button = script.Parent
local bridge = workspace.Bridge
local function buttonPressed()
print("buton dokunuldu")
button.Color = Color3.fromRGB(0, 170, 0)
bridge.Transparency = 0
bridge.CanCollide = true
end
button.Touched:Connect(buttonPressed)Kodunuzu Hata Ayıklayın
Sorun: Oyun başladığında köprü zaten sağlam. Parçaların Sabit olduğundan ve hiçbir şeye dokunmadığından emin olun. Parçalar, bir şeyle, örneğin arazi veya başka bir parça ile temas edebilir ve bu da buttonPressed() işlevinin yanlışlıkla tetiklenmesine neden olabilir.
Sorun: Çıktı penceresinde "Köprü Workspace'in geçerli bir üyesi değil" hatası alıyorsunuz. Aşağıdakileri kontrol edin:
- Köprünüzün adlandırılması. Scriptteki köprü, Explorer'daki adıyla tam olarak aynı olmalıdır.
- part.Dokunuldu:Connect(buttonPressed) ifadesinin buttonPressed() işlevinin dışında olduğundan emin olun.
Opsiyonel kod meydan okuması
Bu dersteki script, oyuncuları belirli alanlardan uzak tutan kapılar için de kullanılabilir. Kodlama becerilerinizi geliştirin ve aşağıdakileri yapın:
- Bir kapı parçası oluşturun.
- Kapıdan daha uzakta bir buton oluşturun.
- Bu dersteki scripti değiştirerek kapının şeffaflığını değiştirmesini ve oyuncunun onunla çarpışamamasını sağlayın.
Sizin versiyonunuz aşağıdaki gibi görünebilir:
local button = script.Parent
-- Hatırlatma: Parça adını, Kapı, projenizdeki ile değiştirin
local gate = workspace.Gate
local function buttonPressed()
print("buton dokunuldu")
-- Oyuncuya geri bildirim vermek için butonu kırmızıya değiştirir
button.BrickColor = BrickColor.Red() -- BUNU DEĞİŞTİRİN
-- Kapıyı görünmez yapar
gate.Transparency = 1
-- Oyuncunun kapıdan geçebilmesini sağlar
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)