Des portes qui pivotent
Leçon 3 sur 20 du cours Jeu Roblox : Échapper aux ténèbres de Coddy.
La porte du hall a un ProximityPrompt : à proximité, le joueur voit « E Ouvrir » (une pression sur un téléphone), et lorsqu’il appuie dessus, le Triggered du prompt se déclenche avec le joueur.
Une porte pivote autour de sa charnière, pas de son milieu. Le modèle de la porte contient une pièce invisible Hinge située sur son bord. La position du panneau par rapport à la charnière est hinge.CFrame:ToObjectSpace(panel.CFrame) ; faites pivoter la charnière d’un quart de tour et appliquez à nouveau cette position, et vous obtenez la porte ouverte :
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()Un tween la fait pivoter au lieu de la faire sauter. Une fois ouverte, l’attribut Open de la porte est défini et son prompt est désactivé.
Défi
Facile- Récupère TweenService. Écris
openDoor(door): définis l’attributOpende la porte, désactivedoor.Panel.Promptet anime le panneau jusqu’à effectuer un quart de tour autour de la charnière (0.6 seconde). - Écris
setupDoor(door): lorsque le prompt du panneau est déclenché, ouvre la porte sauf si elle est déjà ouverte. - Configure
workspace.Rooms.Lobby.Door.
Appuie sur Play, marche jusqu’à la porte et appuie sur E. Puis Check.
Essayez vous-même
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local Settings = require(game.ReplicatedStorage.Settings)
-- La nuit tombe : pas 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")
-- Chaque joueur : une lampe de poche à 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.