Trò Chơi Săn Lùng

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

Mô-đun TròChơiSănLùng nhà phát triển cung cấp cho người chơi một cách chơi game tự nhiên để khám phá trải nghiệm của bạn, giới thiệu cho họ toàn bộ địa điểm. Tiến trình của người chơi là liên tục, vì vậy các cuộc săn lùng có thể tiếp tục qua nhiều phiên.

Sử dụng mô-đun

Cài đặt

Để sử dụng mô-đun TròChơiSănLùng trong một trải nghiệm:

  1. Từ menu Cửa Sổ của Studio hoặc thanh công cụ trên tab Trang Chủ, mở Hộp Công Cụ và chọn tab Cửa Hàng Người Tạo.

  2. Đảm bảo đã chọn sắp xếp theo Mô Hình, sau đó nhấp vào nút Xem Tất Cả cho Danh Mục.

  3. Tìm và nhấp vào ô Gói.

  4. Tìm mô-đun Trò Chơi Săn Lùng và nhấp vào nó, hoặc kéo và thả nó vào khung nhìn 3D.

  5. Trong cửa sổ Explorer, di chuyển toàn bộ mô hình TròChơiSănLùng vào ReplicatedStorage. Khi chạy trải nghiệm, mô-đun sẽ bắt đầu chạy.

Sử dụng token

Mô-đun trò chơi săn lùng sử dụng token như các đồ vật mà người chơi tìm kiếm và thu thập. Mô-đun này đi kèm với một mô hình token mà bạn có thể đặt trong thế giới 3D.

  1. Tìm mesh Token1 trong thư mục Workspace của thư mục chính của mô-đun.

  2. Di chuyển Token1 vào cấp cao nhất của phân cấp Workspace và đặt nó ở vị trí mong muốn.

  3. Đặt cho token một tên duy nhất; tên này là cách mà mô-đun theo dõi các token mà mỗi người chơi đã thu thập.

  4. Để thêm nhiều token hơn, hãy sao chép một token hiện có và đặt cho nó một tên duy nhất.

Nếu bạn không muốn sử dụng các token mesh đi kèm, bất kỳ Model hoặc BasePart nào cũng sẽ hoạt động, miễn là nó đáp ứng các tiêu chí sau:

  • Đối tượng có một thẻ CollectionServiceScavengerHuntPart. Nếu muốn, tên thẻ CollectionService mà mô-đun sử dụng có thể được thay đổi bằng cách đặt một giá trị khác cho tokenTag trong một cuộc gọi configureServer.

  • Đối tượng chứa một thực thể con StringValue được thiết lập để hiển thị "văn bản hương vị" khi token được thu thập.

    Mô Hình
    MeshPart

Sử dụng vùng

Các vùng khác một chút so với các token, vì chúng là những khu vực lớn được đánh dấu là "đã thu thập" khi người chơi bước vào. Thêm vào đó, khi một người chơi rời khỏi vùng, hộp thoại văn bản hương vị sẽ tự động biến mất và vùng đó sẽ bị xóa khỏi không gian làm việc.

  1. Tạo một phần có thể neo xung quanh vùng đó, chẳng hạn như một khối hoặc hình cầu. Mô-đun sẽ tự động vô hiệu hóa thuộc tính CanCollide trong thời gian chạy để người chơi không va chạm vật lý với vùng.

  2. Đặt cho nó một tên duy nhất. Tên này là cách mà mô-đun theo dõi các vùng mà mỗi người chơi đã vào.

  3. Sử dụng phần Thẻ của thuộc tính của phần, áp dụng thẻ ScavengerHuntPart cho phần để CollectionService phát hiện nó. Nếu muốn, tên thẻ mà mô-đun sử dụng có thể được thay đổi bằng cách đặt một giá trị khác cho tokenTag trong một cuộc gọi configureServer.

  4. Bao gồm một thực thể con StringValue được thiết lập để hiển thị "văn bản hương vị" khi vùng được vào.

Cấu hình

Mô-đun đã được cấu hình sẵn để phù hợp với hầu hết các trường hợp sử dụng, nhưng nó có thể được tùy chỉnh dễ dàng. Ví dụ, để thay đổi tốc độ xoay của token và tùy chỉnh thông điệp thông tin modal:

  1. Trong StarterPlayerScripts, tạo một LocalScript mới và đổi tên thành Cấu HìnhTròChơiSănLùng.

  2. Dán mã sau vào trong script mới.

    LocalScript - Cấu HìnhTròChơiSănLùng

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
    TròChơiSănLùng.configureClient({
    infoModalText = "Chào mừng đến với Trò Chơi Săn Lùng của tôi!",
    completeModalText = "Cảm ơn bạn đã chơi Trò Chơi Săn Lùng của tôi!",
    tokenRotationSpeed = 60,
    })

Sự kiện thu thập

Mỗi khi một người chơi thu thập một token hoặc bước vào một vùng, sự kiện thu thập sẽ được kích hoạt. Bạn có thể nghe sự kiện này từ một Script phía máy chủ và phản hồi thích hợp. Hàm kết nối nhận được Player đã va chạm với token hoặc đã vào vùng đó và tên của token hoặc vùng đó.

Tương tự, khi một người chơi thu thập tất cả các token hoặc vào tất cả các vùng có thẻ, sự kiện tất cả đã thu thập sẽ được kích hoạt và hàm kết nối sẽ nhận Player liên quan. Hàm này chỉ được kích hoạt một lần cho mỗi người chơi và có thể được sử dụng để thưởng cho người chơi đó một huy hiệu, quyền truy cập vào một khu vực mới, tiền tệ trong trải nghiệm, v.v.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
TròChơiSănLùng.allCollected:Connect(function(player)
print(player.DisplayName .. " đã hoàn thành cuộc săn lùng!")
end)

GUI tùy chỉnh

Mô-đun này cung cấp nhiều tùy chọn để tùy chỉnh GUI mặc định của nó, nhưng bạn có thể chọn hiển thị các phần tử GUI tùy chỉnh thay thế.

Khi useCustomModals được đặt thành true trong hàm configureClient, sự kiện showInfoModal sẽ được kích hoạt mỗi khi người chơi kích hoạt theo dõi token. Tương tự, sự kiện showCompleteModal được kích hoạt khi người chơi đã thu thập tất cả trong trò chơi săn lùng. Cả hai sự kiện này đều có thể được lắng nghe trong một LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.showInfoModal:Connect(function()
-- Hiển thị một modal thông tin tùy chỉnh
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
TròChơiSănLùng.showCompleteModal:Connect(function()
-- Hiển thị một modal hoàn tất tùy chỉnh
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)

Tính năng hiển thị GUI

Mặc định, trò chơi săn lùng sẽ ẩn tất cả các ScreenGuisCoreGuis (ngoại trừ danh sách người chơi) khi hộp thoại thông tin hoặc hộp thoại hoàn thành xuất hiện. Nếu bạn muốn ghi đè hành vi ẩn tự động này và quyết định bằng lập trình các GUI nào nên vẫn hiển thị, hãy bao gồm các callback hideOtherGuisshowOtherGuis và phản hồi với logic tùy chỉnh của riêng bạn.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Tạo một Screen GUI mà sẽ không bị ẩn
local specialGuiInstance = Instance.new("ScreenGui")
-- Vẽ Screen GUI ở trên GUI trò chơi săn lùng
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Thêm nhãn văn bản vào GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Vẫn hiển thị khi hiển thị các modal"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
TròChơiSănLùng.hideOtherGuis(function()
-- Ẩn tất cả các Screen GUI do nhà phát triển định nghĩa
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance.Name == "TròChơiSănLùng" and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- Ẩn các core GUI cụ thể
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
TròChơiSănLùng.showOtherGuis(function()
-- Hiển thị tất cả các Screen GUI do nhà phát triển định nghĩa mà đã bị ẩn
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Hiển thị các core GUI cụ thể đã bị ẩn
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

Tham khảo API

Các hàm

configureClient

configureClient(config: table)

Ghi đè các tùy chọn cấu hình mặc định phía khách hàng thông qua các khóa/giá trị sau trong bảng config. Hàm này chỉ có thể được gọi từ một LocalScript.

KhóaMô tảMặc định
autoDismissTimeThời gian tính bằng giây trước khi modal tự động đóng hoặc chuyển sang trang tiếp theo nếu có. Đặt thành 0 để vô hiệu hóa.20
closeModalGamepadNút gamepad được sử dụng để đóng các modal (Enum.KeyCode).ButtonA
closeModalKeyboardPhím bàn phím được sử dụng để đóng các modal (Enum.KeyCode).E
completeModalTextVăn bản hiển thị trên modal xuất hiện sau khi nhấp vào theo dõi token khi trò chơi săn lùng hoàn thành."Cảm ơn bạn đã tham gia!"
infoModalTextVăn bản hiển thị trên modal xuất hiện sau khi nhấp vào theo dõi token."Tìm tất cả các token để hoàn thành cuộc săn lùng"
tokenRotationSpeedTốc độ mà các token xoay, tính bằng độ mỗi giây. Đặt thành 0 để ngăn không cho chúng xoay.20
nextArrowImageHình ảnh được sử dụng để chỉ ra rằng còn nhiều trang modal hơn để hiển thị sau trang modal hiện tại."rbxassetid://8167172095"
openTokenTrackerGamepadNút gamepad được sử dụng để hiển thị các modal xuất hiện sau khi kích hoạt theo dõi token (Enum.KeyCode).ButtonY
openTokenTrackerKeyboardPhím bàn phím được sử dụng để hiển thị các modal xuất hiện sau khi kích hoạt theo dõi token (Enum.KeyCode).Y
openTokenTrackerGamepadButtonImageHình ảnh cho nút gamepad được sử dụng để kích hoạt theo dõi token."rbxassetid://8025860488"
regionIconBiểu tượng hiển thị bên cạnh theo dõi token khi vào các vùng."rbxassetid://8073794624"
tokenIconBiểu tượng hiển thị bên cạnh theo dõi token khi thu thập các token."rbxassetid://8073794477"
tokenTrackerPositionSmallDeviceVị trí của giao diện người dùng theo dõi token trên các thiết bị nhỏ như điện thoại (UDim2).(1, 0, 0, 84)
tokenTrackerPositionLargeDeviceVị trí của giao diện người dùng theo dõi token trên các thiết bị lớn hơn như máy tính bảng và PC (UDim2).(1, 0, 1, -16)
useRegionsThay vì sử dụng token, sử dụng vùng.false
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.configureClient({
infoModalText = "Chào mừng đến với Trò Chơi Săn Lùng của tôi!",
completeModalText = "Cảm ơn bạn đã chơi Trò Chơi Săn Lùng của tôi!",
tokenRotationSpeed = 60,
navigationBeam = {
lightEmission = 1
},
modal = {
textSize = 14
},
})

configureServer

configureServer(config: table)

Ghi đè các tùy chọn cấu hình mặc định phía máy chủ thông qua các khóa/giá trị sau trong bảng config. Hàm này chỉ có thể được gọi từ một Script.

KhóaMô tảMặc định
tokenTagThẻ được sử dụng bởi CollectionService để tìm tất cả các token hoặc vùng được sử dụng trong trò chơi săn lùng."ScavengerHuntPart"
datastoreNameTên của DataStore được sử dụng bởi trò chơi săn lùng để lưu trữ tiến trình thu thập của mỗi người chơi."ScavengerHuntTokens"
resetOnPlayerRemovingNếu đúng, đặt lại tiến trình của người dùng khi họ rời khỏi trải nghiệm; thuận tiện cho việc không lưu tiến trình khi thử nghiệm trò chơi săn lùng.false
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.configureServer({
tokenTag = "GreenGem",
})

disable

disable()

Ẩn tất cả giao diện người dùng cho trò chơi săn lùng, ngắt kết nối tất cả các trình nghe sự kiện đầu vào và ngăn người chơi thu thập token hoặc tương tác với các vùng. Hàm này chỉ có thể được gọi từ một Script.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.disable()

enable

enable()

Hiển thị tất cả giao diện người dùng cho trò chơi săn lùng, kết nối tất cả các trình nghe sự kiện đầu vào và cho phép người chơi thu thập token và tương tác với các vùng. Hàm này chỉ có thể được gọi từ một Script.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.enable()

Sự kiện

collected

Kích hoạt khi một người chơi va chạm với một token hoặc vào một vùng. Hàm kết nối sẽ nhận được Player đã va chạm với token hoặc vào vùng và tên của token đã va chạm hoặc vùng đã vào. Sự kiện này chỉ có thể được kết nối trong một Script.

Tham số
player: PlayerNgười dùng đã va chạm với một token hoặc vào một vùng.
itemName: string Tên của token đã va chạm hoặc vùng đã vào.
totalCollected: numberTổng số token đã thu thập bởi người dùng được đại diện bởi player.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)

allCollected

Kích hoạt khi một người chơi thu thập tất cả token hoặc vào tất cả vùng trong trò chơi săn lùng. Hàm kết nối sẽ nhận được Player đã thu thập tất cả token, và nó chỉ được kích hoạt một lần cho mỗi người chơi. Sự kiện này chỉ có thể được kết nối trong một Script.

Tham số
player: PlayerNgười chơi đã thu thập tất cả token hoặc vào tất cả vùng.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.allCollected:Connect(function(player)
print(player.DisplayName .. " đã hoàn thành cuộc săn lùng!")
end)

showInfoModal

Kích hoạt khi người chơi nhấp vào theo dõi token khi tùy chọn useCustomModals cấu hình được đặt thành true. Sự kiện này chỉ có thể được kết nối trong một LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.showInfoModal:Connect(function()
local infoModal = Players.LocalPlayer.PlayerGui.InfoModal
infoModal.Enabled = true
end)

showCompleteModal

Kích hoạt khi người chơi nhấp vào theo dõi token khi tùy chọn useCustomModals cấu hình được đặt thành true và người chơi đã thu thập tất cả token trong trò chơi săn lùng. Sự kiện này chỉ có thể được kết nối trong một LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TròChơiSănLùng = require(ReplicatedStorage.TròChơiSănLùng)
TròChơiSănLùng.showCompleteModal:Connect(function()
local completeModal = Players.LocalPlayer.PlayerGui.CompleteModal
completeModal.Enabled = true
end)

Callback

hideOtherGuis

hideOtherGuis(callback: function)

Callback này chạy ngay trước khi một modal được hiển thị, cho phép bạn vô hiệu hóa toàn bộ ScreenGuis hoặc các phần tử bên trong chúng trước khi modal được hiển thị. Xem Tính năng hiển thị GUI để biết thêm chi tiết và mã mẫu.

showOtherGuis

showOtherGuis(callback: function)

Callback này chạy ngay sau khi một modal đã được đóng, cho phép bạn kích hoạt toàn bộ ScreenGuis hoặc các phần tử bên trong chúng. Xem Tính năng hiển thị GUI để biết thêm chi tiết và mã mẫu.

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