Menu
CoddyTech

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.

challenge icon

Thử thách

Trung bình

Đặt một căn phòng phía sau cửa sảnh.

  1. Khai báo các biến cục bộ rooms = workspace.Rooms, lastRoom = rooms.Lobby, count = 0.
  2. Viết addRoom(): tăng count thêm 1, sao chép ServerStorage.Rooms[Settings.Order[(count - 1) % #Settings.Order + 1]], dịch chuyển nó đến lastRoom.Exit.CFrame.
  3. Đặt nó làm con của rooms, gán lastRoom, gọi setupDoor(room.Door), rồi trả về nó. Gọi addRoom() ở 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