สร้าง Coin Collection ตัวเร่ง

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่


ตอนนี้คุณมีโลก 3D แล้ว ส่วนนี้ของการฝึกเริ่มต้นสอนคุณวิธีการเพิ่มสคริปต์แรกของคุณเพื่ออธิบายกลไกเก็บเหรียญ กลไกนี้ช่วยให้ผู้เล่นเก็บเหรียญได้ และปิดการเก็บเหรียญเมื่อเก็บเหรีย

สร้างเหรียญ

ก่อนที่คุณจะสามารถสคริปต์อะไรได้คุณต้องมีวัตถุที่ว่างเปล่าในโลกเพื่อใช้เป็นเหรียญของคุณ เช่นเดียวกับแท่นยืนทะเลที่คุณสร้างในส่วนก่อนหน้านี้เหรียญสามารถเป็นวัตถุ Part ได้

เพื่อสร้างเหรียญ:

  1. ใน หน้าต่าง Explorer เพิ่มโฟลเดอร์ใหม่ใน โลก โฟลเดอร์แล้วเปลี่ยนชื่อมันเป็น เหรียญ

  2. ใส่ชิ้นส่วน ทรงกระบอก ใน กระเป๋าเหรียญ แล้วเปลี่ยนชื่อชิ้นส่วนเป็น เหรียญ

    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. เลือกชิ้นส่วน แล้วในหน้าต่าง โปรพีเพอร์ตี้

    • ตั้ง สีอิฐ เป็น ทอง * ตั้ง วัสดุ เป็น โลหะ * ตั้ง ขนาด เป็น 0.6, 8, 4 * ปิดการใช้งาน CanCollide นี้จะบอกให้เครื่องยนต์ว่าชิ้นอื่นสามารถผ่านเหรียญได้หมายถึงผู้เล่นสามารถเดินผ่านเหรียญเพื่อเก็บพวกเขา
    • เปิดใช้งาน ติดขัด นี้จะบอกให้เครื่องยนต์ไม่เคยเปลี่ยนตำแหน่งของเหรียญใด ๆ เนื่องจากการจำลองทางฟิสิกส์ใด ๆ ซึ่งหมายความว่าผู้เล่นสามารถแตะเหรียญโดยไม่ส่งผลกระทบต่อตำแหน่งของมัน
    A close up view of a gold coin next to two gray cylinder sea stacks on the island.
  4. ดับเบิลเหรียญอีกไม่กี่เหรียญและวางพวกเขารอบแผนที่เพื่อวัตถุประสงค์ในการทดสอบ

    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.

ตอนนี้จุดสูงของทรงกระบอกของคุณดูเหมือนเหรียญและป้องกันการจำลองฟิสิกส์ แต่คุณต้องเพิ่มโลจิกให้กับเหรียญเพื่อให้ผู้เล่นสามารถเก็บพวกเขาได้

สร้างสคริปต์

เพื่อให้เหรียญสามารถเก็บได้ คุณต้องการตอบสนองต่อผู้เล่นที่แตะพวกเขา เครื่องมือ Roblox สามารถแจ้งให้คุณทราบเมื่อมีอะไรแตะต้องเหรียญ แต่คุณต้องประกาศว่าในสคริป

  1. ใน หน้าต่าง Explorer เลื่อนเมาส์ไปที่ ServerScriptService และคลิกปุ่ม ปุ่มคอนเท็กส์ตัวเมนู.

  2. จากเมนูบริบทรัพย์, เลือก สคริปต์ คุณจะเห็นสคริปต์ใหม่ที่ปรากฏภายใต้ ServerScriptService รหัส

    Studio's Explorer window with both ServerScriptService's plus icon and Script object highlighted.
  3. เปลี่ยนชื่อสคริปต์เป็น CoinService

    Studio's Explorer window with the CoinService script highlighted under ServerScriptService.
  4. แทนที่รหัสเริ่มต้นด้วยรหัสต่อไปนี้:


    -- กําลังเริ่มบริการและแปรตัว
    local Workspace = game:GetService("Workspace")
    local Players = game:GetService("Players")
    local coinsFolder = Workspace.World.Coins
    local coins = coinsFolder:GetChildren()
    local COOLDOWN = 10
    -- การตั้งระบบตรวจจับเหตุการณ์
    local function onCoinTouched(otherPart, coin)
    if coin:GetAttribute("Enabled") then
    local character = otherPart.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- ผู้เล่นแตะต้องเหรียญ
    coin.Transparency = 1
    coin:SetAttribute("Enabled", false)
    print("Player collected coin")
    task.wait(COOLDOWN)
    coin.Transparency = 0
    coin:SetAttribute("Enabled", true)
    end
    end
    end
    -- การตั้งค่าผู้ฟังอีเวนต์
    for _, coin in coins do
    coin:SetAttribute("Enabled", true)
    coin.Touched:Connect(function(otherPart)
    onCoinTouched(otherPart, coin)
    end)
    end

    ตอนนี้, เมื่อผู้เล่นแตะต้องเหรียญ, เหรียญจะหายไป 10 วินาที, และบันทึกการออกพิมพ์ Player collected coin .

    ส่วนต่อไปนี้อธิบายวิธีการทำงานของสคริปต์ในรายละเอียดมากขึ้น

    กําลังเริ่มบริการและแปรผัน

    เช่นเดียวกับโค้ดจำนวนมากที่คุณอาจเขียนในภาษาอื่น ๆ คุณจะกำหนดตัวแปรที่คุณต้องการในภายหลังที่ด้านบนของสคริปต์ กำลังติดตาม:

    • รับตัวอย่างบริการ - บริการ Roblox ให้คุณสมบัติที่สร้างขึ้นสำหรับคุณสมบัติทั่วไป สคริปต์แรกจะรับตัวอย่างบริการของ Workspace ซึ่งเป็นบริการที่ม

    • รับคำอ้างอิงของเหรียญทั้งหมด - สคริปต์จากนั้นจะเรียก 3D พื้นที่ทำงานสำหรับทุกคำอ้างอิงไปยังเหรียญโดยใช้วิธี GetChildren()

    • กำหนดตัวแปร global หนึ่ง - ตัวแปร COOLDOWN ใช้ในภายหลังเพื่อกำหนดระยะเวลาในการปิดใช้งานเหรียญหลังจากที่มันถูกเก็บรวบรวม

      กําลังเริ่มบริการและแปรผัน

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

    กำหนดตัวจัดการเหตุการณ์

    เครื่องมือ Roblox จะทําการจําลอง 3D โลกและจัดการกับจํานวนมากของเหตุผลเพื่อจัดการกับเหตุการณ์ที่เกี่ยวข้องกับการเรน

    • ตรวจสอบว่าเหรียญถูกเปิดใช้งานหรือไม่ ทุกๆ Instance มีค่าตัว Enabled ที่กำหนดว่าว่ามีหรือไม่มีวัตถุในโลก 3D คุณสามารถรับค่าตัว

    • ตรวจสอบว่าผู้เล่นแตะหุ้น - หากเปิดใช้งานหุ้น วิธีจะใช้บริการผู้เล่นเพื่อตรวจสอบว่าวัตถุที่แตะหุ้นเป็นผู้เล่นจริงหรือไม่ เมื

    • ปิดเหรียญหากผู้เล่นแตะมัน, และเปิดเหรียญใหม่หลังจาก 10 วินาที - ในที่สุด, หากผู้เล่นแตะเหรียญ, วิธีการปิดเห

      การตั้งระเบียบการจัดการอีเวนต์

      local function onCoinTouched(otherPart, coin)
      if coin:GetAttribute("Enabled") then
      local character = otherPart.Parent
      local player = Players:GetPlayerFromCharacter(character)
      if player then
      -- ผู้เล่นแตะต้องเหรียญ
      coin.Transparency = 1
      coin:SetAttribute("Enabled", false)
      print("Player collected coin")
      task.wait(COOLDOWN)
      coin.Transparency = 0
      coin:SetAttribute("Enabled", true)
      end
      end
      end

    การเชื่อมต่อตัวประมวลผลอีเวนต์

    วัตถุ 3D ทั้งหมดที่จำลองจะได้รับจาก BasePart และดังนั้นจึงมีกิจกรรม Touched() เหตุการณ์ ต่อไปนี้เชื่อมต่อผู้จัดการ onTouchedEvent() ไปยังเ

    • ห่อนผ่านเหรียญทั้งหมด - ห่อนผ่านแต่ละเหรียญโดยใช้การเรียกทั่วไป

    • เชื่อมตัวจัดการกับเหตุการณ์ - ในแต่ละการเริ่มต้นของสเต็ปโหลด เหรียญจะเปิดใช้งานโดยค่าเริ่มต้น

      การเชื่อมต่อตัวจัดการอีเวนต์

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

ทดสอบผู้เล่นที่จะเป็นผู้ประกอบการ

ถึงเวลาดูว่าหน่วยรวบรวมเหรียญทำงานตามที่คาดไว้หรือไม่ เพื่อทดสอบประสบการณ์ของคุณ:

  1. ในแถบเมนู คลิกปุ่ม เล่น ปุ่ม Studio จะเข้าสู่โหมดทดสอบการเล่น

    Studio's Home tab with the Play button highlighted in the menu bar.
  2. ย้ายตัวละครของคุณไปสัมผัสกับเหรียญ หากสคริปต์ของคุณทำงานอย่างถูกต้อง หน้าต่าง การออก จะแสดง Player collected coin และเหรียญจะหายไปเป็นเวลา 10 วินาทีก่อนที่จะปรากฏขึ้นอีกคร

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