Mengumpulkan item

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Dengan papan peringkat dibuat, pemain membutuhkan sesuatu untuk dikumpulkan.Untuk itu, Anda perlu membuat item 3D untuk pemain temukan di dunia.Di bawah ini adalah video dari proses pengumpulan item pemain.

Membangun item

Item dalam pengalaman adalah model 3D yang pemain gunakan alat untuk panen.Setiap item, setelah dipanen, menghilang dan kemudian muncul kembali setelah jumlah waktu terbatas.

Untuk item, refer kembali ke dokumen desain permainan Anda. Seri ini menggunakan kristal sebagai contoh.

  1. Buat objek, baik menggunakan bagian atau objek yang ditemukan oleh pengguna tepercaya di Pasar.

    Jika diinginkan, unduh bagian kristal dengan tautan ini link. Untuk menambahkannya, klik kanan di Workspace dan pilih Masukkan dari File .

  2. Jika menggunakan bagian Anda sendiri, kumpulkan semua bagian menjadi Model .Salah satu cara melakukan ini adalah dengan memilih semua item, klik kanan pada bagian, dan pilih Grup .Ini membuat model yang mengatur bagian Anda.

  3. Pastikan bahwa semua bagian diikat semua .

  4. Jadi item tidak dapat dipanen saat mereka menghilang, buat BoolValue bernama CanHarvest untuk melacak statusnya.

  5. Di Properti untuk CanHarvest, periksa kotak Nilai . Memeriksa kotak nilai membuat boolean benar, artinya pemain dapat memanen item.

Buat alat

Pemain membutuhkan sesuatu seperti kapak atau sekop untuk mengumpulkan barang-barang dengan.Di Roblox, item yang dapat dipakai dan digunakan pemain disebut alat .Pelajaran ini menggunakan alat pemula dengan semua bagian dan animasi yang sudah dibuat yang dapat Anda kustomisasi nanti.

Tambahkan alat

Untuk pemain menggunakan alat pemula, unduh dan tempatkan di StarterPack.

  1. Unduh alat pemula di bawah ini.

  2. Di Explorer, di bawah Workspace, klik kanan pada StarterPack. Kemudian, pilih Masukkan dari File .

  3. Pilih file yang diunduh, starterTool.rbxm .

  4. Tes proyek Anda.Pemain harus dilengkapi dengan alat segera setelah mereka mulai.Di dalam game, tekan 1 untuk melengkapi atau menyimpan alat.Klik kiri untuk mengayunya.

Kode alat

Jika alat memukul objek yang dapat dipanen dan pemain memiliki cukup ruang di tas mereka, hitungan item pemain naik 1 di papan peringkat.Memanenkan item membuatnya menghilang selama beberapa detik dan menjadi tidak dapat dipanen selama beberapa detik sebelum muncul kembali.Ini mendorong pemain untuk menjelajahi untuk menemukan lebih banyak item, bukan hanya dengan mengklik item yang sama.

Menyiapkan skrip

Pada titik ini, tambahkan skrip ke alat. Skrip ini menangani apa yang terjadi ketika alat menyentuh objek yang dapat dipanen.

  1. Di StarterPack, di bawah StarterTool, tambahkan skrip baru bernama ToolScript.

  2. Dalam skrip, tulis komentar deskriptif di bagian atas, lalu buat variabel untuk menyimpan bagian alat dan alat itu sendiri.


    -- Memberi pemain item ketika mereka menyentuh bagian yang dapat dipanen
    local tool = script.Parent
    local toolPart = tool.Handle

Periksa item

Setiap kali alat menyentuh objek, itu memeriksa apakah objek tersebut memiliki CanHarvest di dalam dan apakah boolean diatur ke True.

  1. Buat fungsi baru bernama onTouch() dengan parameter bernama partTouched .


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. Dalam fungsi itu, buat variabel lokal bernama canHarvest .Kemudian, gunakan fungsi FindFirstChild() untuk melihat apakah ada CanHarvest boolean di orangtua bagian itu.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Sekarang skrip perlu memeriksa apakah ada sesuatu yang ditemukan dan jika demikian, jalankan kode.Untuk melakukan ini, buat pernyataan if di mana kondisinya adalah canHarvest .Jika ada sesuatu yang ada di canHarvest , pernyataan ini mengevaluasi ke benar.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. Dalam pernyataan if, tambahkan pernyataan cetak untuk melihat apakah skrip berfungsi. Anda dapat mengkode logika untuk mengumpulkan item setelah Anda yakin berfungsi.


    if canHarvest then
    -- Digunakan untuk pengujian apakah kode berfungsi
    print("Found an item")
    end
  5. Di bawah pernyataan fungsi end, tambahkan toolPart.Touched:Connect(onTouch).Ini memungkinkan skrip memeriksa apakah ada yang menyentuh alat (atau dalam kasus ini, pegangannya) dan jika demikian, memanggil onTouch() .


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. Mainkan proyek dan gunakan alat pada item yang dapat dipanen (klik kiri untuk ayunan). Pastikan Anda melihat pesan "Menemukan item" di jendela Keluaran.

Tip pemecahan masalah

Jika Anda tidak melihat pesan, coba tips berikut.

  • Jika Anda menggunakan bagian dan meshes khusus, mungkin terjadi kesalahan.Skrip hanya berfungsi jika objek CanHarvest adalah anak dari bagian yang disentuh alat.
  • Pastikan bahwa alat berada di StarterPack, bukan di Workspace.
  • Periksa apakah bagian tersebut diberi pijakan.

Dapatkan statistik pemain

Sebelum meningkatkan item pemain, alat harus menemukan lokasi berapa banyak item yang dimiliki pemain di papan peringkat pemain itu.Setelah alat memiliki akses ke papan peringkat, ia dapat mengubah jumlah item pemain itu.

  1. Pertama, dapatkan pemain menggunakan alat. Di ToolScript, di bawah local item = toolitem , dan di atas fungsi khusus, ketik:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. Di baris berikutnya, temukan statistik pemimpin pemain menggunakan fungsi FindFirstChild().


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. Di bawah local playerStats, buat variabel untuk menyimpan statistik item dan ruang.


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

Periksa untuk objek yang dapat dipanen

Sekarang skrip alat memiliki variabel playerItems dan playerSpaces yang dibuat, Anda dapat mulai memberi pemain item.Gunakan fungsi yang dibuat untuk memeriksa apakah objek yang menyentuh alat dapat dipanen, dan jika pemain memiliki cukup ruang di tas mereka untuk meningkatkan item yang ditampilkan di papan peringkat sebanyak satu.

  1. Skrip akan membutuhkan pernyataan if dengan dua kondisi yang harus dipenuhi.Mulai dengan membuat pernyataan if, lalu tambahkan kondisi berikut, terhubung dengan kata kunci and.

    • 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. Dalam pernyataan if itu sendiri, tambahkan ke item pemain dengan mengetik playerItems.Value += 1 .


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. Mainkan proyek Anda; gunakan alat Anda untuk memanen item dan periksa apakah jumlah item meningkat.

Setel ulang item

Ketika item dipanen, itu akan diatur ulang dalam dua cara:

  • Item akan menghilang dan tidak dapat berinteraksi
  • CanHarvest ditetapkan ke false

Item kemudian akan kembali normal setelah waktu singkat.Dengan cara ini, pemain hanya mendapatkan satu item untuk setiap panen, dan perlu mencari lebih banyak saat reset asli.

  1. Di bawah tempat item ditambahkan, atur canHarvest ke false.Dengan menjadikan nilai canHarvest palsu saat pemain memanen item, skrip tidak akan memberikan lebih dari satu item per serangan alat.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. Setelah mengatur nilai ke false, atur Transparansi bagian menjadi 1 (tidak terlihat), dan CanCollide ke false, artinya pemain tidak dapat menyentuhnya.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. Ketik task.wait(5) untuk memberikan waktu bagi item untuk reset. 5 adalah angka yang disarankan, dan mungkin berbeda untuk berapa lama Anda ingin pengalaman Anda.


    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. Setelah menunggu, lakukan kebalikan dari kode sebelumnya, dengan mengatur CanHarvest menjadi benar, dan mengatur Transparansi dan CanCollide kembali ke nilai aslinya.


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Mainkan proyek dan periksa:

    • Pemain hanya mendapatkan 1 item untuk memanen item.
    • Item menghilang lalu muncul kembali setelah lima detik.

Tip pemecahan masalah

Pada titik ini, jika salah satu pemeriksaan tidak lulus coba salah satu di bawah ini.

  • Periksa bahwa Transparansi dan CanCollide diucapkan dan diberi huruf besar persis.
  • Pastikan untuk menggunakan canHarvest.Value dan bukan canHarvest = true.

Skrip Alat Lengkap

Versi selesai dari skrip dapat di referensikan di bawah ini.


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
-- Setel ulang bagian yang disentuh, item yang dipanen
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Membuat item yang dipanen muncul kembali dan dapat digunakan lagi
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)