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ông cụ và đưa chúng vào trong kho đồ của người chơi hoặc đặt chúng xung quanh thế giới như những vật thu thập được.

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 phải tạo một cái. Dễ dàng hơn để xem trước 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ể làm cho nó trở thành một mục kho đồ hoặc một mục được kiếm được/mua.

  1. Trong hệ thống phân cấp Explorer, di chuột qua Workspace, nhấn 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 mà 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 (phổ biến nhất) hay một công cụ không vật lý chỉ chiếm giữ kho đồ của người chơi và phản ứng với đầu vào của họ.

Công cụ vật lý

Sau khi tạo phiên bả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 sẽ cần bao gồm một tay cầm mà nhân vật người chơi nắm.

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

Công cụ trong trò chơi có thể gồm một hoặc nhiều Parts và/hoặc MeshParts. Nếu bạn cấu tạo 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ơ học khác để công cụ giữ nguyên như một khối trong khi người chơi mang nó theo.

Các lựa 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ụ theo, 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ẽ kết nối với phần RightHand của mô hình nhân vật (R15) hoặc phần Right Arm (R6).

Nếu công cụ chỉ được cấu thành từ một MeshPart, bạn 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ên là Handle như một con cái trực tiếp của Tool 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ơ học.

Ví dụ sau đây cho thấy một công cụ với ba phiên bả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í/định hướng 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 so với nhân vật đang cầm nó.

Vì vị trí/định hướng nắm lý tưởng khác nhau với 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 chính xác. Ví dụ sau đây cho thấy các cài đặt Grip có thể không chính xác và chính xác cho đèn lồng treo:

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

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

Một Tool không vật lý chỉ chiếm giữ kho đồ của người chơi và phản ứng 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 ma thuật mà người chơi có thể "niệm" thông qua kho đồ của họ.

Công cụ không vật lý không yêu cầu bất kỳ cấu thành 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 việc 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 chính xác của hệ thống phân cấp Explorer. Nơi bạn đặt công cụ trong hệ thống phân cấp phụ thuộc vào mục đích sử dụng 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ó vào 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 nóng liên kết 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. Để kiểm soát thứ tự tốt hơn, bạn có thể thêm một LocalScript vào StarterPack mà tạm thời di chuyển các công cụ đến ReplicatedStorage và sau đó đổi cha chúng về 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
-- Đổi cha các công cụ về 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 được

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ụ đã đượ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ư đã lưu ý trong phần thêm phần/mô hình, các phần công cụ không nên thường xuyê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ụ được neo. Tuy nhiên, nếu bạn muốn neo một công cụ thu thập được đến 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 đây vào công cụ để hạ neo các phần của nó khi được thu thập.

Hạ 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ụ được kiếm được/mua

Nếu bạn muốn đặt công cụ làm phần thưởng cho khi người chơi hoàn thành nhiệm vụ hoặc cung cấp công cụ để bán trong một cửa hàng trong trò chơi, hãy đặt những công cụ đó vào 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 các 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ác 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ể của công cụ sau đây chỉ định 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 bỏ 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 trò chơi).
  • Deactivated() — Kích hoạt khi người chơi ngừng đầu vào kích hoạt (nhả 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ụ đã không còn được trang bị")
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ỉ phát sinh trong LocalScripts phía máy khách vì chỉ thiết bị của người chơi mới biết khi nào có đầu vào xảy ra. Do đó, hầu hết các công cụ yêu cầu cả LocalScriptScript 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ừ máy khách đến máy chủ (xem các sự kiện và callback từ xa để biết thêm thông tin).

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

Công cụLocalScriptScript
Đũa phép của người sáng tạoNhận diện vị trí mà 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 mà người chơi chạm hoặc nhấp.
Áo choàng vô hìnhNhận diện khi người chơi trang bị công cụ (Equipped()) hoặc không trang bị công cụ (Unequipped()).Làm cho người chơi trở nên vô hình với tất cả các người chơi khác khi áo choàng đang được trang bị và khôi phục cho người chơi toàn bộ khả năng nhìn thấy khi áo choàng không còn được trang bị.
Cung tên khổng lồNhận diện thời gian mà người chơi kích hoạt công cụ (thời gian giữa Activated()Deactivated()).Bắn một mũi tên ma thuật 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.