Công cụ trong trò chơi

*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.

Công cụ trong trò chơi Tools là những công cụ tương tác mà người chơi có thể trang bị trong các phiên chơi, chẳng hạn như vũ khí, đũa phép, đèn pin, chìa khóa và nhiều hơn nữa. Bạn có thể thiết kế các công cụ và đưa chúng vào kho đồ của người chơi hoặc đặt chúng xung quanh thế giới như những vật phẩm thu thập.

Tạo một công cụ trong trò chơi

Đối tượng Tool là cơ sở của bất kỳ công cụ nào trong Roblox, vì vậy bạn sẽ cần tạo một cái. Dễ hơn để xem trước cách một công cụ trông như thế nào bằng cách thiết kế nó trong Workspace, và sau đó bạn có thể biến nó thành một mục kho đồ hoặc một mục kiếm được/mua.

  1. Trong cấu trúc Explorer, di chuột qua Workspace, nhấp vào nút ⊕ và chèn một Tool.

    Đối tượng công cụ được tạo trong không gian làm việc
  2. Với Tool mới được chọn, truy cập vào cửa sổ Properties và tùy chỉnh cách công cụ sẽ xuất hiện trong kho đồ của người chơi:

    • TextureId — Chỉ định ID tài sản hình ảnh cho công cụ trong kho đồ của người chơi.
    • ToolTip — Tên tooltip khi di chuột qua công cụ trong kho đồ của người chơi.
  3. Quyết định xem công cụ sẽ là một công cụ vật lý trong môi trường 3D (thông dụng nhất) hay một công cụ không vật lý chỉ chiếm chỗ trong kho đồ của người chơi và phản hồi với đầu vào của họ.

Công cụ vật lý

Sau khi tạo một thể hiện Tool cho một công cụ vật lý, bạn sẽ cần thêm các phần/mô hình để tạo thành hình dáng của nó trong thế giới 3D. Bạn cũng cần bao gồm một tay cầm mà các nhân vật người chơi nắm.

Thêm các phần/mô hình

Công cụ trong trò chơi có thể bao gồm một hoặc nhiều Parts và/hoặc MeshParts. Nếu bạn xây dựng công cụ từ nhiều mảnh, hãy nhớ kết nối tất cả chúng lại với nhau bằng cách sử dụng WeldConstraints hoặc các ràng buộc cơ khí khác để công cụ giữ nguyên hình dạng khi người chơi mang nó xung quanh.

Các bộ chọn ràng buộc được chỉ định trong thanh công cụ của Studio

Đặt tay cầm

Để cho phép người chơi mang công cụ xung quanh, một phần của công cụ cần được đặt tên là Handle. Đây là nơi công cụ sẽ gắn vào phần RightHand cơ thể (R15) hoặc phần Right Arm (R6) của mô hình nhân vật.

Nếu công cụ chỉ bao gồm một MeshPart, chỉ cần đặt tên phần đó là Handle. Nếu không, bạn có thể bao gồm một phần riêng biệt được đặt tên là Handle như một con cái trực tiếp của Tool cha và sau đó gắn nó vào một phần khác bằng một WeldConstraint hoặc ràng buộc cơ khí.

Ví dụ sau đây cho thấy một công cụ với ba thể hiện: mô hình Handle, một RopeConstraint, và một mô hình đèn lồng treo từ dây.

Điều chỉnh vị trí/orientation nắm

Thuộc tính Grip của công cụ là một CFrame chỉ định cách công cụ được định vị và định hướng tương đối với nhân vật đang cầm nó.

Vì vị trí/orientation nắm lý tưởng là khác nhau cho mỗi công cụ, bạn sẽ cần thử nghiệm với các giá trị cho đến khi nắm của công cụ trông đúng. Ví dụ sau đây cho thấy các cài đặt Grip không đúng và đúng cho đèn lồng treo:

Đèn lồng kéo trên mặt đất với Grip.Position là (0, -2, 0) và Grip.Orientation là (-90, 0, 0)
Đèn lồng ở trước nhân vật với Grip.Position là (0, -1.5, 0) và Grip.Orientation là (25, 0, 0)

Công cụ không vật lý

Một Tool không vật lý chỉ chiếm chỗ trong kho đồ của người chơi và phản hồi với đầu vào của họ. Ví dụ, một trò chơi nhập vai có thể có một loạt các phép thuật kỳ diệu mà người chơi có thể "niệm" thông qua kho đồ của họ.

Các công cụ không vật lý không yêu cầu bất kỳ thành phần 3D nào và không sử dụng phần Handle, vì vậy bạn nên vô hiệu hóa thuộc tính RequiresHandle của công cụ:

Thêm công cụ vào trò chơi

Khi bạn hoàn thành tạo công cụ trong trò chơi của mình, bạn sẽ cần đặt nó vào khu vực đúng trong cấu trúc Explorer. Nơi bạn đặt công cụ trong cấu trúc phụ thuộc vào cách sử dụng dự kiến của nó.

Kho đồ của người chơi

Nếu bạn muốn tất cả người chơi bắt đầu với một công cụ trong kho đồ của họ, hãy đặt nó bên trong container StarterPack. Khi bất kỳ người chơi nào xuất hiện, hệ thống sẽ sao chép công cụ vào Backpack của họ. Từ đó, người chơi có thể trang bị công cụ bằng cách nhấp vào biểu tượng kho đồ của nó hoặc bằng cách nhấn phím tắt liên quan như 1 hoặc 2.

Lưu ý rằng các công cụ được sao chép vào kho đồ của người chơi (Backpack) theo thứ tự mà chúng được thêm vào StarterPack. Để có thứ tự kiểm soát hơn, bạn có thể thêm một LocalScript vào StarterPack để tạm thời di chuyển các công cụ đến ReplicatedStorage và sau đó chuyển lại chúng vào Backpack theo thứ tự được chỉ định trong bảng order.

Sắp xếp lại Kho đồ
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local order = {"WaterSpell", "FireSpell", "AirSpell", "EarthSpell"}
local backpack = script.Parent
for _, item in backpack:GetChildren() do
if item:IsA("Tool") then
item.Parent = ReplicatedStorage
end
end
-- Chuyển lại các công cụ vào kho đồ theo thứ tự đã chỉ định
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

Công cụ thu thập

Nếu bạn muốn cho phép người chơi thu thập các công cụ vật lý khi họ khám phá thế giới 3D, hãy đặt các công cụ trong Workspace giống như các đối tượng 3D bình thường. Các công cụ đã thu thập sẽ tự động được trang bị và thêm vào kho đồ của người chơi (bạn không cần thêm phát hiện va chạm bổ sung để các nhân vật có thể nhặt công cụ).

Như đã đề cập trong phần thêm các phần/mô hình, các phần công cụ thường không nên là Anchored, vì các nhân vật người chơi sẽ bị kẹt tại chỗ khi họ nhặt hoặc trang bị một công cụ đã neo. Tuy nhiên, nếu bạn muốn neo một công cụ thu thập ở một vị trí cụ thể trong thế giới 3D, chẳng hạn như nổi lên một chút trên mặt đất, bạn có thể thêm Script sau vào công cụ để bỏ neo các phần của nó khi thu thập.

Bỏ neo Công cụ khi Trang bị/Thu thập
local tool = script.Parent
tool.Equipped:Connect(function()
for _, part in tool:GetDescendants() do
if part:IsA("BasePart") and part.Anchored then
part.Anchored = false
end
end
end)

Công cụ kiếm được/mua

Nếu bạn muốn đặt các công cụ làm phần thưởng khi người chơi hoàn thành nhiệm vụ, hoặc cung cấp các công cụ để bán trong một cửa hàng trong trò chơi, hãy đặt các công cụ đó bên trong ReplicatedStorage. Từ đó, bạn có thể Clone() một công cụ vào Backpack của người chơi vào thời điểm thích hợp.

Sao chép Công cụ vào Kho đồ của Người chơi
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Tạo một bản sao của công cụ
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Thêm bản sao vào kho đồ của người chơi
end

Thực hiện hiệu ứng công cụ

Sau khi thêm công cụ vào trò chơi của bạn, bạn có thể thực hiện các kịch bản để cho phép người chơi sử dụng công cụ của họ và thực hiện các hành động mong muốn. Các sự kiện cụ thể cho công cụ sau đây cho biết trạng thái của công cụ và đầu vào của người chơi với nó.

  • Equipped() — Kích hoạt khi người chơi chọn công cụ từ kho đồ của họ.
  • Unequipped() — Kích hoạt khi người chơi chuyển đổi công cụ hoặc thả công cụ.
  • Activated() — Kích hoạt khi người chơi bắt đầu kích hoạt công cụ (nhấp, chạm hoặc nhấn nút kích hoạt phía sau bên phải trên tay cầm).
  • Deactivated() — Kích hoạt khi người chơi dừng đầu vào kích hoạt (thả nút hoặc chạm).
Mẫu Sự kiện Công cụ
local tool = script.Parent
local function onEquip()
print(tool.Name, "công cụ đã được trang bị")
end
local function onUnequip()
print(tool.Name, "công cụ đã được tháo")
end
local function onActivate()
print(tool.Name, "công cụ đã được kích hoạt")
end
local function onDeactivate()
print(tool.Name, "công cụ đã bị hủy kích hoạt")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)

Các sự kiện công cụ chỉ được kích hoạt trong LocalScripts phía client vì chỉ thiết bị của người chơi mới biết khi nào đầu vào xảy ra. Do đó, hầu hết các công cụ yêu cầu cả một LocalScript và một Script phía máy chủ, nơi mỗi cái xử lý các khía cạnh nhất định của hành vi của công cụ và một RemoteEvent truyền thông tin từ client đến server (xem sự kiện và callback từ xa để biết thêm thông tin).

Dưới đây là các công cụ ví dụ và hành vi của chúng được quản lý bởi một LocalScript hoặc một Script:

Công cụLocalScriptScript
Đũa phép của Người sáng tạoPhát hiện nơi người chơi kích hoạt công cụ (Activated()).Tạo một phần mới tại vị trí trong thế giới 3D nơi người chơi chạm hoặc nhấp.
Áo choàng vô hìnhPhát hiện khi người chơi trang bị công cụ (Equipped()) hoặc tháo công cụ (Unequipped()).Làm cho người chơi vô hình với tất cả các người chơi khác trong khi áo choàng được trang bị và khôi phục người chơi về trạng thái nhìn thấy hoàn toàn khi áo choàng được tháo.
Cung MegaPhát hiện thời gian mà người chơi kích hoạt công cụ (thời gian giữa Activated() và Deactivated()).Bắn một mũi tên kỳ diệu với sức mạnh lớn hơn hoặc nhỏ hơn, tùy thuộc vào thời gian kích hoạt được phát hiện.
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.