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