Mẫu phòng
Bài học 4 trên 25 trong khóa học Trò chơi Roblox: thoát khỏi bóng tối của Coddy.
Phía sau cánh cửa sảnh vẫn chưa có gì. Các phòng là những mẫu trong ServerStorage.Rooms, mỗi mẫu là một Model có một phần Entrance vô hình (PrimaryPart của nó, tức là điểm xoay của mô hình) và một phần Exit nơi đặt cửa.
Để đặt một phòng sau phòng khác, chỉ cần một dòng: đặt điểm xoay của phòng mới, tức phần cửa vào của nó, tại cửa ra của phòng cũ:
local room = ServerStorage.Rooms.Hall:Clone()
room:PivotTo(lastRoom.Exit.CFrame)Mẫu phòng tiếp theo được xác định trong Settings.Order, một danh sách tên. Cửa của phòng mới cũng cần setupDoor.
Thử thách
Trung bìnhĐặt một căn phòng phía sau cửa sảnh.
- Khai báo các biến cục bộ
rooms = workspace.Rooms,lastRoom = rooms.Lobby,count = 0. - Viết
addRoom(): tăngcountthêm 1, sao chépServerStorage.Rooms[Settings.Order[(count - 1) % #Settings.Order + 1]], dịch chuyển nó đếnlastRoom.Exit.CFrame. - Đặt nó làm con của
rooms, gánlastRoom, gọisetupDoor(room.Door), rồi trả về nó. GọiaddRoom()ở cuối.
Nhấn Chơi rồi mở cửa sảnh: một hành lang đang chờ phía sau. Sau đó nhấn Kiểm tra.
Tự làm thử
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local TweenService = game:GetService("TweenService")
local Settings = require(game.ReplicatedStorage.Settings)
-- Đêm xuống: không có ánh mặt trời, ánh sáng yếu khắp nơi và sương mù
Lighting.ClockTime = Settings.ClockTime
Lighting.Ambient = Settings.Ambient
Lighting.OutdoorAmbient = Settings.Ambient
Lighting.FogColor = Color3.new(0, 0, 0)
Lighting.FogEnd = Settings.FogEnd
print("Lights out")
-- Xoay cửa mở quanh bản lề
local function openDoor(door)
door:SetAttribute("Open", true)
door.Panel.Prompt.Enabled = false
local hinge, panel = door.Hinge, door.Panel
local goal = hinge.CFrame * CFrame.Angles(0, math.rad(90), 0) * hinge.CFrame:ToObjectSpace(panel.CFrame)
TweenService:Create(panel, TweenInfo.new(0.6), { CFrame = goal }):Play()
end
-- Cửa sẽ làm gì khi người chơi mở nó
local function setupDoor(door)
door.Panel.Prompt.Triggered:Connect(function(player)
if door:GetAttribute("Open") then
return
end
openDoor(door)
end)
end
setupDoor(workspace.Rooms.Lobby.Door)
-- Bài học 4: Các mẫu phòng được đặt ở đây
-- Mỗi người chơi: một chiếc đèn pin cho mỗi lần hồi sinh
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function()
local flashlight = ServerStorage.Flashlight:Clone()
flashlight.Parent = player.Backpack
local beam = flashlight.Handle.Beam
flashlight.Activated:Connect(function()
beam.Enabled = not beam.Enabled
end)
end)
end)
Tất cả bài học trong Trò chơi Roblox: thoát khỏi bóng tối
Tự luyện tập: Playground Roblox