Changement de taille

Sur cette page tu trouveras comment faire:

  • Un script serveur de changement de taille automatique
  • Un script Local Joueur pour changer la taille du joueur quand il touche un objet

Script Serveur

Ce script permet d’avoir des objets taggés dont la taille va varier de façon régulière. On peut s’en servir pour créer un obstacle qui grossis et retrecie par exemple:

local CollectionService = game:GetService(« CollectionService ») — récuperer les objets du jeu

 

— constament en train de tourner, verifie les objets du jeu pour savoir si on en a raté un qui aurait le bon tag
for _, object in pairs(CollectionService:GetTagged(« grossis »)) do — si l’objet à le bon tag
    if object:IsA(« BasePart ») then — on s’assure d’avoir bien touché l’objet et pas une sous-partie
        local taille_origine = object.Size — on mémorise sa taille normale
        while true do
            object.Size *= 2 — double de taille
            wait(5)
            object.Size = taille_origine –reviens normal
            wait(5)
        end
    end
end

Serveur Script Joueur

Le changement de taille du joueur doit être gérée par serveur car sinon ce n’est visible que par le joueur qui le fait.
Pour plus d’infos sur les chose gérée par le serveur VS celles gérées par le joueur, regarde la fiche Variable Serveur.

local CollectionService = game:GetService("CollectionService") --récupère les objets du jeu

local control = false

local function ObjetTouchee(objet,other) -- la fonction qui se lancer quand il y a contact
    local humanoid = other.Parent:FindFirstChildOfClass("Humanoid")
    if control == false and humanoid then
        control = true      
        humanoid.BodyWidthScale.Value = 0.5 -- largeur du corps
        humanoid.BodyDepthScale.Value = 0.5 -- epaisseur du corps
        humanoid.BodyHeightScale.Value = 0.5 -- hauteur du corps
        humanoid.HeadScale.Value = 0.5 -- taille de la tête
        control = false
    end
end


for _, object in pairs(CollectionService:GetTagged("petit")) do -- pour tout objet taggé
    if object:IsA("BasePart") then -- si touché par un humanoid
        object.Touched:Connect(function(otherPart)ObjetTouchee(object,otherPart) -- lancer la fonction
        end)end
end

Choisir sa valeur hors script

On peut utiliser un attribut pour décider de la valeur de taille directement dans Roblox (ce qui rend le script plus versatile)

Consulte la fiche des attributs pour voir comment les créer et change legèrement ton code: (choisi la bonne ligne!)

object.Size *= object:GetAttribute("taille")
 
humanoid.BodyWidthScale.Value = object:GetAttribute("largeur") -- largeur du corps
humanoid.BodyDepthScale.Value = object:GetAttribute("epaisseur") -- epaisseur du corps
humanoid.BodyHeightScale.Value = object:GetAttribute("hauteur") -- hauteur du corps
humanoid.HeadScale.Value = object:GetAttribute("tete") -- taille de la tête
Retour en haut