Thu thập các mục

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Với bảng xếp hạng đã tạo, người chơi cần có thứ gì đó để thu thập. Để làm điều đó, bạn cần tạo một mặt hàng 3D cho người chơi để tìm thấy trong thế giới. Dưới đây là một video về quá trình thu thập của người chơi.

Xây dựng một mục

Các mục trong trải nghiệm là mô hình 3D mà người chơi sử dụng công cụ để thu hoạch. Mỗi vật phẩm, một khi thu hoạch, biến mất và sau đó xuất hiện lại sau một thời gian giới hạn.

Đối với vật phẩmnày, tham khảo lại tài liệu thiết kế trò chơi của bạn. Bộ trưng dụng đá quý là ví dụ.

  1. Tạo một đối tượng, sử dụng các bộ phận hoặc đối tượng được tìm thấy bởi các người dùng đáng tin cậy trên Marketplace.

    Nếu muốn, tải mảnh pha lê này với link này . Để thêm nó, nhấp chuột phải vào Workspace và chọn Nhập từ File .

  2. Nếu sử dụng bộ phận của riêng bạn, hãy tập hợp tất cả các bộ phận thành một Mô Hình . Cách thức này để làm điều này là chọn tất cả các mục, nhấp chuột phải vào một mục và chọn Nhóm . Điều này tạo ra một mô hình tổ chức các mục của

  3. Đảm bạo tất cả các bộ phận đều cắm chắc .

  4. Vì vậy, các mục không thể được thu hoạch khi chúng biến mất, tạo một giá trị BoolValue tên CanHarvest để theo dõi trạng tháicủa nó.

  5. Trong Properties for CanHarvest, kiểm tra hộp Giá trị . Kiểm tra hộp giá trị làm cho hộ true, có nghĩa là người chơi có thể thu thập vật phẩm.

Tạo một công cụ

Người chơi cần một cái gì đó như một chiếc hach hoặc một cái cuốc để thu thập vật phẩm với. Ở Roblox, các công cụ mà người chơi có thể trang bị và sử dụng được gọi là công cụ . Bài học này sử dụng một công cụ khởi đầu với tất cả các bộ phận v

Thêm công cụ

Để người chơi sử dụng công cụ xuất phát, tải xuống và đặt nó vào StarterPack.

  1. Tải công cụ khởi đầu dưới đây.

  2. Trong Explorer, under Workspace, right-click on StarterPack. Sau đó, select Nhập từ File .

  3. Chọn tập tin đã tải, starterTool.rbxm .

  4. Thử nghiệm dự án của bạn. Người chơi nên được trang bị công cụ ngay khi họ bắt đầu. Trong trò chơi, nhấn 1 để trang bị hoặc đặt công cụ xuống. Bấm chuột trái để cúi nó.

Lập trình công cụ

Nếu công cụ đánh vào một đối tượng có thể thu hoạch và người chơi có đủ không gian trong túi, số lượng mục của người chơi tăng lên 1 trên bảng xếp hạng. Khi thu hoạch một mục, nó sẽ biến mất trong vài giây và trở nên không thu hoạch trong vài

Cài đặt Script

Tại thời điểm này, hãy thêm một script vào công cụ. Script này xử lý những gì xảy ra khi công cụ chạm vào một đối tượng có thể thu hoạch.

  1. Trong StarterPack, dưới StarterTool, thêm một mô-đun mới có tên là ToolScript.

  2. Trong script, viết một bình luận mô tả ở trên, sau đó tạo các biến để lưu trữ phần công cụ và công cụ.


    -- Tặng người chơi một món đồ khi chạm vào một phần có thể thu hoạch
    local tool = script.Parent
    local toolPart = tool.Handle

Kiểm tra các mục

Mỗi khi công cụ chạm vào một đối tượng, nó kiểm tra xem đối tượng đó có CanHarvest bên trong và nếu đối tượng đó được cài đặt về Giải pháp.

  1. Tạo một chức năng mới có tên là onTouch() với một biến tùy chỉnh có tên là partTouched .


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. Trong chức năng đó, tạo một biến địa phương tên là canHarvest . Sau đó, sử dụng chức năng FindFirstChild() để xem có phải có CanHarvest Boolean trong cha của phần đó không.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Bây giờ, script cần kiểm tra có phải có bất kỳ thứ gì được tìm thấy thực sự không và nếu vậy, chạy mã. Để làm điều này, tạo một if statement nơi điều kiện là canHarvest . Nếu có bất kỳ thứ gì ở trong canHarvest , thì tuyên bố này đánh giá đến true.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. Trong câu if, hãy thêm một câu print để xem liệu script có hoạt động không. Bạn có thể code logic cho việc thu thập các mục sau khi bạn chắc chắn nó hoạt động.


    if canHarvest then
    -- Được sử dụng để kiểm tra xem mã hoạt động
    print("Found an item")
    end
  5. Trong câu end của chức năng, thêm toolPart.Touched:Connect(onTouch) . Điều này cho phép script kiểm tra xem có bất kỳ điều gì đang chạm vào công cụ (hoặc trong trường hợp này, nó là tay cầm) và nếu vậy, gọi onTouch() .


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. Chơi dự án và sử dụng công cụ trên một mục đã thu hoạch (nhấp chuột bên trái đểwing). Đảm bảo bạn thấy thông điệp "Tìm thấy một vật phẩm" trong Cửa sổ Thoát.

Mẹo dịch vụ

Nếu bạn không thấy thông tin nhắn, hãy thử các mẹo sau đây.

  • Nếu bạn đang sử dụng các bộ phận và mạng lưới tùy chỉnh, có thể xảy ra lỗi. Skript chỉ hoạt động nếu CanHarvest là con của một trong những bộ phận mà công cụ chạm đến.
  • Hãy chắc chắn rằng công cụ nằm trong StarterPack, không phải trong Workspace.
  • Kiểm tra xem phần có được kết dính hay không.

Lấy Chỉ số Người chơi

Trước khi tăng cường các mục của người chơi, công cụ phải tìm vị trí của số lượng các mục mà người chơi có trong bảng xếp hạng của người chơi. Sau khi công cụ có quyền truy cập vào bảng xếp hạng, nó có thể thay đổi số lượng mục của người chơi.

  1. Đầu tiên, hãy người chơi sử dụng công cụ. Trong ToolScript, dưới local item = toolitem và trên trên cùng của hàm tùy chỉnh, hãy đánh máy:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. Ở dòng tiếp theo, tìm các chỉ số lãnh đạo của người chơi bằng cách sử dụng hàm FindFirstChild() .


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. Dưới local playerStats , tạo biến để lưu trữ các thống kê đồ vật và không gian.


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

Kiểm tra một đối tượng có thể thu hoạch

Bây giờ khi tập lệnh công cụ có các biến playerItems và playerSpaces đã tạo, bạn có thể bắt đầu cho người chơi một vật phẩm. Sử dụng chức năng đã tạo để kiểm tra nếu món đồ chạm vào công cụ có thể được thu hoạch, và nếu người chơi có đủ không gian trong túi để tăng món đồ đượ

  1. Script sẽ cần một if statement với hai điều kiện để đáp ứng. Bắt đầu bằng cách tạo một if statement, sau đó thêm các điều kiện kế tiếp, kết nối với cụm từ khóa 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. Trong if statement itself, add to the người chơi's items by typing playerItems.Value += 1 .


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. Chơi dự án của bạn; sử dụng công cụ của bạn để thu hoạch một mục tài và kiểm tra số lượng mục tài đã tăng lên.

Đang đặt lại vật phẩm

Khi mục được thu hoạch, nó sẽ được đặt lại theo hai cách:

  • Vật phẩm sẽ biến mất và không thể tương tác
  • CanHarvest được đặt lại thành false

Vật phẩm sẽ sau đó trở lại bình thường sau một thời gian ngắn. Theo cách này, người chơi chỉ nhận được một mặt hàng cho mỗi vụ thu hoạch, và cần phải tìm kiếm nhiều hơn khi đổi mới.

  1. Dưới đâu các mục được thêm, hãy thiết lập canHarvest để sai. Bằng cách làm cho giá trị của canHarvest sai ngay cả khi người chơi thu thập vật phẩmtừ công cụ này, script sẽ không cung cấp nhiều hơn một mục mỗi công cụ đánh.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. Sau khi đặt giá trị về false, set part Transparency to 1 (invisible), và CanCollide về false, có nghĩa là người chơi không thể chạm vào nó.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. Nhập task.wait(5) để cho thời gian cho mục đã được thiết lập lại. 5 là một số được đề xuất, và có thể khác nhau cho thời gian bạn muốn cho trải nghiệm của bạn.


    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. Sau khi chờ, làm ngược lại với mã trước, bằng cách thiết lập CanHarvest thành true và thiết lập Transparency và CanCollide về giá trị mặc định của chúng.


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Chơi dự án và kiểm tra:

    • Người chơi chỉ nhận được 1 vật phẩm cho việc thu hoạch một vật phẩm.
    • Món đồ biến mất và sau đó xuất hiện lại sau năm giây.

Mẹo dịch vụ

Tại thời điểm này, nếu một trong những kiểm tra không thông qua hãy thử một trong những lựa chọn dưới đây.

  • Kiểm tra Transparency và CanCollide có được viết và hoạt động chính xác không.
  • Hãy đảm bảo sử dụng canHarvest.Value và không được canHarvest = true.

Hoàn tất ToolScript

Một phiên bản hoàn thành của script có thể được tham khảo ở dưới đây.


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
-- Đặt lại phần Touched, nông dụng vật phẩmthu hoạch
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Làm cho món đồ đã thu hoạch xuất hiện lại và có thể sử dụng lại
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)