Checkpoint
Sur cette page tu trouveras comment faire:
- Les 2 morceaux d’un checkpoint:
- Le script de respawn sur le checkpoint
- le script de ramassage du checkpoint
Bien sur il te faudra aussi un objet que tu touchera, qui sera ton checkpoint, et qui aura le Tag approprié.
Script Local Joueur
Le script joueur est très court, il sert juste à dire: si le joueur à un checkpoint, respawn dessus
local player = game.Players:GetPlayerFromCharacter(script.Parent) -- récupère le joueur dans la liste des joueurs pour gerer les scores-- partie pour respawn au bon endroitif player.checkpointValue.Value ~= nil then script.Parent:MoveTo(player.checkpointValue.Value.Position + Vector3.new(math.random(-4, 4), 4, math.random(-4, 4))) --tp avec un peu d'aléatoireendServeur Script
Le script serveur s’occupe de la collision avec le checkpoint, et de l’enregistrement de la position quand on le touche
local function playerSpawned(player) --création des variables local checkpointValue = Instance.new("ObjectValue", player) -- on créer notre variable pour que chaque joueur gère son checkpoint checkpointValue.Name = "checkpointValue"endgame.Players.PlayerAdded:Connect(playerSpawned) --donne aux nouveaux joueurs leurs variables
local CollectionService = game:GetService("CollectionService") -- liste des objets du jeulocal players = game:GetService("Players") -- liste des joueurs du jeu
local function Touchee(object,otherPart) local player = players:GetPlayerFromCharacter(otherPart.Parent) -- on récupère le joueur qui à touché le checkpoint if player then -- si c'est bien un joueur qui a touché player.checkpointValue.Value = object -- changer son checkpoint object:Destroy() -- optionel, détruit le checkpoint wait(0.1) -- waits(secondes) Paramètre = temps en secondes. considéré mauvaise pratique de ne pas utiliser de paramètres endend
-- constament en train de tourner, verifie les objets du jeu pour savoir si on en a raté un qui aurait le bon tagfor _, object in pairs(CollectionService:GetTagged("checkpoint")) do if object:IsA("BasePart") then -- si on touche un objet de base (et pas un sous-morceau) object.Touched:Connect(function(otherPart)Touchee(object,otherPart) -- on lance le code necessaire end)endend