Menu
CoddyTech

하나씩 차례로

Coddy의 Roblox 게임: 어둠에서 탈출하기 코스 레슨. 20개 중 5번째.

처음에 방 하나만 만들면 방 하나짜리 게임이 됩니다. 문이 열릴 때 게임에서 방을 만들어야 합니다. 가장 최근 방의 문을 열면 그 뒤에 새 방이 있어야 합니다.

그러면 서로가 필요한 두 함수가 생깁니다. setupDoor는 addRoom을 호출하고, addRoom은 setupDoor를 호출합니다. 코드를 사용하기 전에 로컬을 선언해야 하므로 addRoom을 먼저 선언하고 나중에 작성합니다.

local addRoom -- 여기서 선언하고 아래에서 정의함

local function setupDoor(door)
	-- ... addRoom() ...
end

function addRoom()
	-- ... setupDoor(room.Door) ...
end

개수가 Settings.RoomsToEscape에 도달하면, 그 방은 Exit 템플릿, 즉 출구가 됩니다.

challenge icon

챌린지

중급
  1. setupDoor 위에 local addRoom을 선언하고, function addRoom()으로 작성하세요.
  2. setupDoor에서 문을 열기 전에, 문이 lastRoom에 속해 있으면 방을 추가하세요.
  3. addRoom에서 count가 Settings.RoomsToEscape에 도달하면 Exit 템플릿을 사용하세요.
  4. 끝에 있는 addRoom() 호출을 제거하세요.

이 레슨의 월드에는 짧은 탈출 경로가 있습니다(방 3개). 플레이를 누른 다음 확인을 누르세요.

직접 해보기

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)

local rooms = workspace.Rooms
local lastRoom = rooms.Lobby -- 가장 최근에 생성된 방
local count = 0 -- 지금까지 생성된 방의 수

-- 밤이 찾아온다: 태양은 없고, 곳곳에 희미한 빛과 안개가 있다
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")

-- 경첩을 축으로 문을 돌려 연다
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

-- 플레이어가 문을 열 때 문이 하는 일
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)

-- 가장 최근에 생성된 방의 출구에 새 방을 만든다
local function addRoom()
	count += 1
	local name = Settings.Order[(count - 1) % #Settings.Order + 1]
	local room = ServerStorage.Rooms[name]:Clone()
	room:PivotTo(lastRoom.Exit.CFrame)
	room.Parent = rooms
	lastRoom = room
	setupDoor(room.Door)
	return room
end

addRoom()

-- 모든 플레이어에게 부활할 때마다 손전등을 지급한다
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)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Roblox 게임: 어둠에서 탈출하기의 모든 레슨