Buat Mekanik Koleksi Mata Uang

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


Sekarang Anda memiliki dunia 3D, bagian ini dari tutorial menunjukkan cara menambahkan skrip pertama Anda untuk mendefinisikan mekanik kumpulan koin. Meха ini memungkinkan pemain untuk mengumpulkan koin, dan menonaktifkan kumpulan koin jika telah baru-baru ini diumpulkan.

Buat Koin

Sebelum Anda dapat menulis apa pun, Anda perlu memiliki objek pengganti di dunia untuk menggunakan sebagai koin Anda. Seperti platform tumpukan laut yang Anda buat di bagian sebelumnya, koin dapat menjadi objek Part sederhana.

Untuk menciptakan koin:

  1. Di jendela Explorer , tambahkan dossier baru ke dossier Dunia , lalu ganti nama itu Koin .

  2. Sisipkan bagian silinder ke dalam Koin folder, lalu ganti nama bagian menjadi Koin .

    Studio's Explorer window with the Coin part highlighted. The hierarchy of the Workspace to World folder to Coins folder to Coin part is also highlighted.
  3. Pilih bagian, lalu di jendela Properti ,

    • Tetapkan WarnaBatu menjadi Emas .
    • Tetapkan Bahan ke Logam .
    • Tetapkan Ukuran ke 0.6, 8, 4 .
    • Nonaktifkan Bisa Bertabrakan . Ini memberi tahu mesin bahwa bagian lain dapat melewati koin, yang berarti pemain dapat berjalan melalui koin untuk mengumpulkannya.
    • Aktifkan Terancang . Ini memberi tahu mesin untuk tidak pernah mengubah posisi koin karena simulasi fisik apa pun, yang berarti pemain dapat menyentuh koin tanpa menyentuh lokasi koin.
    A close up view of a gold coin next to two gray cylinder sea stacks on the island.
  4. Duplikasi beberapa koin lain dan letakkan di sekitar peta untuk tujuan pengujian.

    Studio's Explorer window with multiple Coin parts highlighted under the Coins folder. A view of multiple coins on the island and two gray cylinder sea stacks.

Bagian silinder Anda sekarang terlihat seperti koin dan mencegah simulasi fisika, tetapi Anda perlu menambahkan logika ke koin agar pemain dapat mengumpulkannya.

Buat Skrip

Untuk membuat koin dapat dikumpulkan, Anda ingin bereaksi terhadap pemain yang menyentuhnya. Mesin Roblox dapat memberitahu Anda ketika sesuatu menyentuh koin, tetapi Anda perlu menyatakan bahwa dalam naskah. Untuk membuat naskah:

  1. Di jendela Explorer , geser atas ServerScriptService dan klik tombol . Menu konteks ditampilkan.

  2. Dari menu konteks, pilih Skrip. Sebuah skrip baru ditampilkan di bawah ServerScriptService, yang memberi tahu mesin untuk mengeksekuskan skrip di server, dan mencegah klien mengakses kode.

    Studio's Explorer window with both ServerScriptService's plus icon and Script object highlighted.
  3. Ganti nama script menjadi CoinService .

    Studio's Explorer window with the CoinService script highlighted under ServerScriptService.
  4. Ganti kode default dengan kode berikut:


    -- Menginisialisasi layanan dan variabel
    local Workspace = game:GetService("Workspace")
    local Players = game:GetService("Players")
    local coinsFolder = Workspace.World.Coins
    local coins = coinsFolder:GetChildren()
    local COOLDOWN = 10
    -- Mendefinisikan penangani acara
    local function onCoinTouched(otherPart, coin)
    if coin:GetAttribute("Enabled") then
    local character = otherPart.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Pemain menyentuh koin
    coin.Transparency = 1
    coin:SetAttribute("Enabled", false)
    print("Player collected coin")
    task.wait(COOLDOWN)
    coin.Transparency = 0
    coin:SetAttribute("Enabled", true)
    end
    end
    end
    -- Mengatur pendengar acara
    for _, coin in coins do
    coin:SetAttribute("Enabled", true)
    coin.Touched:Connect(function(otherPart)
    onCoinTouched(otherPart, coin)
    end)
    end

    Sekarang, setiap kali seorang pemain menyentuh koin, koin itu menghilang selama 10 detik, dan log keluaran menghasilkan Player collected coin .

    Bagian berikut menjelaskan cara skrip bekerja lebih lanjut.

    Menginisialisasi Layanan dan Variabel

    Seperti dengan banyak kode yang mungkin Anda tulis dalam bahasa lain, Anda mendefinisikan variabel yang Anda butuhkan nanti di bagian atas script. Kode kami melakukan mengikuti:

    • Dapatkan instans layanan - Roblox services memberikan fungsionalitas bawaan untuk fitur umum. Skrip pertama mengambil instans dari layanan Workspace , yang mengandung setiap objek di dunia 3D, dan layanan Player, yang mengelola dan berisi semua pemain yang terhubung ke pengalaman Anda.

    • Dapatkan referensi untuk semua koin - Skrip kemudian mengkonsultasi ruang kerja 3D untuk semua referensi ke objek GetChildren() - Metode ini mengembalikan array yang berisi semua yang diasosiasikan dengan objek yang dikaitkannya, yang dalam kasus ini adalah Workspace.World.Coins

    • Definisikan variabel global - Variabel COOLDOWN digunakan kemudian untuk menentukan berapa lama menonaktifkan koin setelah dikumpulkan.

      Menginisialisasi Layanan dan Variabel

      local Workspace = game:GetService("Workspace")
      local Players = game:GetService("Players")
      local coinsFolder = Workspace.World.Coins
      local coins = coinsFolder:GetChildren()
      local COOLDOWN = 10
      ...

    Mendefinisikan Penangani Acara

    Mesin Roblox secara fisik menyimulas dunia 3D dan menangani banyak logika untuk menangani acara yang terkait dengan render, fisika, dan jaringan. Saat Anda tertarik untuk menyelesaikan logika Anda sendiri selama beberapa acara ini, Anda dapat mendengarkan dan menangani mereka, sementara mesin mengambil alih sisanya

    • Mendeteksi apakah koin diaktifkan - Setiap Instance memilikiribut Enabled yang mendefinisikan apakah atau tidak objek ada di dunia 3D. Anda dapat mengambil instansi atribut dengan metode 0> Class.Instance:GetAttribute()|GetAttribute()0>.

    • Mendeteksi apakah seorang pemain menyentuh koin - Jika koin diaktifkan, metode menggunakan layanan pemain untuk memeriksa apakah objek yang menyentuh koin adalah pemain. Saat terjadi acara sentuh, Roblox engine mengevaluasi objek yang menyentuh koin sebagai parameter otherPart. Skrip memeriksa apakah orang t

    • Menonaktifkan koin jika pemain menyentuhnya, dan mengaktifkannya kembali setelah 10 detik - Terakhir, jika pemain menyentuh koin, metode menonaktifkan koin, menunggu selama 10 detik, dan kemudian mengaktifkan koin untuk koleksi. task.wait()

      Mendefinisikan Penangani Acara

      local function onCoinTouched(otherPart, coin)
      if coin:GetAttribute("Enabled") then
      local character = otherPart.Parent
      local player = Players:GetPlayerFromCharacter(character)
      if player then
      -- Pemain menyentuh koin
      coin.Transparency = 1
      coin:SetAttribute("Enabled", false)
      print("Player collected coin")
      task.wait(COOLDOWN)
      coin.Transparency = 0
      coin:SetAttribute("Enabled", true)
      end
      end
      end

    Mengaktifkan Penangani Acara

    Semua objek 3D yang disimulasikan mewarisi dari BasePart dan oleh karena itu memiliki acara Touched() . Loop berikut menghubungkan pengelola onTouchedEvent() ke setiap acara sentuh koin dengan melakukan mengikuti:

    • Loop melalui semua koin - Loop melalui masing-masing koin menggunakan general iterasi.

    • Hubungkan penangani ke acara - Dalam setiap putaran ulang dari loop, koin diaktifkan secara default, jadi itu terlihat di dunia 3D selama awal putaran. Metode onCoinTouched() penangani koin terhubung ke acara Touched koin se

      Mengaktifkan Penangani Acara

      for _, coin in coins do
      coin:SetAttribute("Enabled", true)
      coin.Touched:Connect(function(otherPart)
      onCoinTouched(otherPart, coin)
      end)
      end

Mainkan Meханик

Saatnya untuk melihat apakah mekanik koleksi koin bekerja seperti yang diharapkan. Untuk menguji pengalaman Anda:

  1. Di bilah menu, klik tombol Bermain . Studio memasuki mode pengujian.

    Studio's Home tab with the Play button highlighted in the menu bar.
  2. Pindahkan karakter Anda untuk menyentuh koin. Jika skrip Anda bekerja dengan benar, jendela Output menunjukkan Player collected coin , dan koin itu menghilang selama 10 detik sebelum muncul kembali.

    Studio's Output window that displays confirmation that the player collected a coin.