Modèles de pièces
Leçon 4 sur 20 du cours Jeu Roblox : Échapper aux ténèbres de Coddy.
Derrière la porte du hall, il n’y a encore rien. Les salles sont des modèles dans ServerStorage.Rooms, chacune étant un Model avec une pièce Entrance invisible (son PrimaryPart, donc le pivot du modèle) et une pièce Exit où se trouve sa porte.
Placer une salle après une autre se fait en une ligne : place le pivot de la nouvelle salle, son entrée, sur la sortie de l’ancienne salle :
local room = ServerStorage.Rooms.Hall:Clone()
room:PivotTo(lastRoom.Exit.CFrame)Le modèle qui vient ensuite est indiqué dans Settings.Order, une liste de noms. La porte d’une nouvelle salle a aussi besoin de setupDoor.
Défi
Moyen- Ajoute
local rooms = workspace.Rooms,local lastRoom = rooms.Lobbyetlocal count = 0. - Écris
addRoom()soussetupDoor: ajoute 1 àcount, clone le modèle nomméSettings.Order[count], place-le surlastRoom.Exit, définis son parent surrooms, fais-enlastRoom, configure sa porte et renvoie-le. - Appelle
addRoom()une fois à la fin du script.
Appuie sur Play et ouvre la porte du hall. Puis clique sur Check.
Essayez vous-même
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)
-- La nuit tombe : plus de soleil, un peu de lumière partout et du brouillard
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")
-- Faire pivoter une porte sur ses gonds pour l’ouvrir
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
-- Ce que fait une porte lorsqu’un joueur l’ouvre
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)
-- Chaque joueur : une lampe torche à chaque vie
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)
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.