Eşyaları Toplama

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

Lider tablosu oluşturulduktan sonra, oyuncular toplamak için bir şeye ihtiyaç duyuyor. Bunun için, oyuncuların dünyada bulabileceği 3D öğeleri oluşturmalısınız. Aşağıda, oyuncuların öğeleri toplama sürecinin bir video olduğunu gösteriyor.

Bir Eşyayı Oluştur

Deneyimdeki öğeler oyuncuların toplum için toplama aracı olarak kullandığı 3D modelleridir. Her bir öğe, bir kez toplandıktan sonra, sınırlı bir süreden sonra tekrar görünür.

öğeiçin oyun tasarımınıza geri dönün. Bu seri kristalleri örnek olarak kullanır.

  1. Güvenilir kullanıcıların Marketplace'de bulduğu parçaları veya nesneleri kullanarak bir nesne oluşturun.

    İstediğinizde, bu bağlantı ile kristal parçayı indirin. Onu eklemek için Çalışma Alanı'na sağ tıklayın ve Arşiv'den Ekle seçeneğini seçin.

  2. Kendi parçanızı kullanıyorsanız, tüm parçaları bir Model içine toplayın. Bunu yapmanın bir yolu, tüm öğeleri seçmek, bir parçaya sağ tıklamak ve Grup seçmektir. Bu, parçalarınızı organize eden bir model oluşturur.

  3. Parçaların tümü ancak olmalıdır.

  4. Öyleyse öğeler görünmezken toplanmaz, CanHarvest adındaki bir BoolValue oluşturun toplama durumunu izlemek için.

  5. CanHarvest'da Özellikler'de, Değer Değer kutusunu kontrol edin. Değer kutusunu kontrol etmek, oyuncuların öğeyi toplayabileceğini ifade eder.

Bir Alet Oluşturulması

Oyuncular bir balta veya kürek gibi bir şeye ihtiyaç duyar. Roblox'ta, oyuncular takıp kullanabileceği öğelerin adı aletler dir. Bu ders, ilk başta her bir parçaya ve animasyonuna sahip bir başlangıç aleti kullanır.

Araç Ekleme

Oyuncular başlangıç ​​araçlarını kullanabilmek için, indirin ve StarterPack'te yerleştirin.

  1. Aşağıdaki başlangıç ​​araçlarını indirin.

  2. Explorer'da, Workspace'ta, StarterPack'e sağ tıklayın. Sonra Dosyadan İçeriği Ekle seçin.

  3. Yüklenen dosyayı seçin, starterTool.rbxm .

  4. Projenizi test edin. Oyuncular oyuna başlatalet ile donatılmalıdır. Oyun içinde, 1 ile aleti takmak veya çıkarmak için tıklayın. Sol tıklama ile aleti sallayın.

Araç Kodlanıyor

Araç bir hasat edilebilir nesneye vurur ve oyuncu çantasında yeterli alan varsa, oyuncunun öğe sayısı liderlik tablosu1 artar. Bir öğeyi toplamak, birkaç saniye boyunca görünmez hale gelir ve birkaç saniye boyunca yeniden ortaya çıkmadan önce toplanmaz. Bu, oyuncuların daha fazla öğeyi bulmasını sağlar, aynı öğey

Script'i ayarlama

Bu noktada, araç içine bir senaryo ekleyin. Bu senaryo, aletin bir hasat alanına dokunduğunda neler olacağını ele alır.

  1. StarterPack'ta, StarterTool altında, ToolScript adında yeni bir senaryo ekleyin.

  2. Skriptte, aşağıda açıklayıcı bir yorum yazın ve ardından araç parçasını ve araç kendisiyle ilgili ortam değişkenleri oluşturun.


    -- Hasat edilebilir bir parçaya dokununca oyuncuya öğe verir
    local tool = script.Parent
    local toolPart = tool.Handle

Eşyalar için Kontrol

Araç bir nesneye dokunduğunda, bu nesnenin CanHarvest içinde bulunduğunu veya boBoolean'ın Açık olduğunu kontrol eder.

  1. partTouched ile adlandırılmış bir yeni işlev oluşturun.

local tool = script.Parent
local toolPart = tool.Handle
local function onTouch(partTouched)
end
  1. Bu işlevde, canHarvest adında bir yerel değişken oluşturun. Sonra, FindFirstChild() işlevini kullanarak, bu bölgenin ebeveyninde CanHarvest olup olmadığını görün.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  2. Şimdi, kodun gerçekten herhangi bir şey bulunduğunu ve eğer öyleyse, kodu çalıştırması gerekir. Bunu yapmak için, şartın canHarvest olduğu bir ifade oluşturun. Eğer canHarvest içinde herhangi bir şey varsa, bu ifade gerçekten doğru değerlendirilir.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  3. if ifadesine, script'in çalışıp çalışmadığını görmek için bir print ifadesi ekleyin. Logik, çalıştığından emin olduktan sonra öğeleri toplama için kodlayabilirsiniz.


    if canHarvest then
    -- Kodun işlediğini test etmek için kullanılır
    print("Found an item")
    end
  4. 함数'nin end ifadesi altında, toolPart.Touched:Connect(onTouch) ekleyin. Bu, script'nin araç üzerinde herhangi bir şeyi dokunup dokunmadığını kontrol etmesine izin verir ve eğer öyleyse, onTouch() çağrılır.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  5. Projeyi oynat ve araz bir öğeye (güvenli olmak için sol tıkla) kullan the tool. Make sure you see the message "Bir öğeyi buldum" in theOutput Window.

Hata ayıklama ipuçları

Eğer mesajı göremiyorsanız, aşağıdaki ipuçlarını deneyin.

  • Özel parçalar veya malzemeler kullanıyorsanız, bir hata alabilirsiniz. Skript sadece CanHarvest nesnesi arazi aletinin dokunduğu parçanın bir çocuğu olduğunda çalışır.
  • Araç StarterPack'ta, İş Alanında değil, olduğundan emin olun.
  • Parçanın yerleştirildiğinden emin olun.

Oyuncu İstatistiklerini Almak

Oyuncunun öğelerini artırmadan önce, araç oyuncunun liderlik tablosukaç tane öğe olduğunu bulmalıdır. Araç liderlik tablosueriştiğinde, oyuncunun öğe sayısını değiştirebilir.

  1. Önce, araç kullanıcısını elde edin. AraçScript'te, local item = toolitem altında ve özel fonksiyonun üstünde, yaz:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. Önümdeki satırda, FindFirstChild() işlevini kullanarak oyuncunun lider tablosunu bulun.


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. local playerStats altında, öğeleri ve alanların istatistiklerini depolamak için değişkenler oluşturun.


    local playerStats = player:FindFirstChild("leaderstats")
    local playerItems = playerStats:FindFirstChild("Items")
    local playerSpaces = playerStats:FindFirstChild("Spaces")

Hasat Edilebilir Bir Objeyi Kontrol Ediliyor

Araç scriptinin artık oyuncuItems ve oyuncuSpaces değişkenleri oluşturduğunda, oyunculara bir öğe vermeye başlayabilirsiniz. Arayüz oluşturma işlevini kullanarak, araç ile etkileşime geçen oyuncunun eline geçebilecek öğeleri gösteren bir sayfada gösteren bir öğe vermeyi kontrol edebilirsiniz.

  1. Kodun iki şartını karşılayacak bir ifadeye ihtiyacı olacak. ifadeyi oluşturmak ile başlayın, sonra and anahtar kelimesiyle bağlantılı olarak aşağıdaki koşulları ekleyin.

    • canHarvest.Value == true
    • playerItems.Value < playerSpaces.Value

    local function onTouch(partTouched)
    local canHarvest = partTouched.Parent:FindFirstChild("CanHarvest")
    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    end
    end
    end
  2. if ifadesinin kendisi, playerItems.Value += 1 'i oyuncunun öğelerine ekleyin.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. Projenizi oynatın; aracınızı kullanarak bir öğeyi hasat edin ve öğe sayısını artırın.

Eşyayı Sıfırlama

Öğe toplanınca, iki yolda sıfırlanır:

  • Eşya kaybolacak ve etkileşime geçmez
  • CanHarvest ayarı false olarak belirlenmiştir

Öğe kısa bir süre sonra normale dönecek. Bu yol, oyuncular sadece her hasat için bir öğe alır ve orijinal sıfırlanana kadar etrafta dolaşmalıdır.

  1. Eşyaların eklenmesi altında, canHarvest değerini canHarvest yapmayı sağlayın. Oyuncular öğeyi topladığında değerini canHarvest olarak ayarlayarak, kullanıcı başına aşağıdaki araça daha fazla bir öğe vermez.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. Değer yanlış olarak ayarlandıktan sonra, parçanın Görünürlüğünü 1 (görünmez) olarak ayarla ve CanCollide'yi yanlış olarak ayarla, oyuncuların dokunamayacağı anlamına geliyor.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. Ekranınızın sıfırlaiçin zaman vermek için task.wait(5) yazın. 5, önerilen bir sayıdır ve belki de deneyiminiz için ne kadar uzun süre istediğinizi farklı yapabilir.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    task.wait(5)
    end
  4. Bekledikten sonra, CanHarvest'ı kodve Transparency ve CanCollide'ı varsayımlarına dönüştürün.


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Projeyi oynat ve kontrol et:

    • Bir öğeyi hasat etmek için sadece 1 öğe alır.
    • Öğe beş saniye sonra tekrar görünür.

Hata ayıklama ipuçları

Bu noktada, bir denetleyiciden başarısız olan biri varsa, aşağıdaki birinden deneyin.

  • Transparency ve CanCollide'ın isimlerinin ve harflerinin doğru yazıldığından emin olun.
  • Harvest = true değerini kullanın.

Komut Kısmını Tamamla

Skriptin bitirilmiş bir versiyonu aşağıda referanslanabilir.


local toolPart = script.Parent
local tool = toolPart.Parent
local backpack = tool.Parent
local player = backpack.Parent
local playerStats = player:FindFirstChild("leaderstats")
local playerItems = playerStats:FindFirstChild("Items")
local playerSpaces = playerStats:FindFirstChild("Spaces")
local function onTouch(partTouched)
local canHarvest = partTouched:FindFirstChild("CanHarvest")
if canHarvest then
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
playerItems.Value += 1
canHarvest.Value = false
-- ParçaTouched, hasat edilen öğe
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Hasarlı öğeyi tekrar ekme ve kullanılabilir hale getir
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)