FANDOM


Le scripting permet de définir comment votre jeu (ou film interactif) va se comporter et réagir aux contrôles du joueur. Il permet d'agir en fonction des évènements tel qu'un bouton pressé, le temps qui passe, etc.

Sur le long terme, CraftStudio proposera un système de scripting visuel. Pour l'instant, les scripts sont écrits en Lua, qui est un langage de programmation plutôt simple. Vous pouvez consulter la référence du scripting qui rassemble toutes les fonctions mises à disposition par CraftStudio pour vos scripts.

Qu'est-ce qu'un script ?Modifier

Un script définit un comportement pour un ou plusieurs objets de votre jeu.

Une fois créé, le script peut être rattaché à un ou plusieurs objets de jeu dans une scène en ajoutant un composant de type Comportement Scripté. Cela signifie que vous pouvez réutiliser le même script sur plusieurs objets, par exemple pour partager un même comportement pour un ensemble d'objets similaires (pour un même type d'ennemi par exemple, ou des portes automatiques qui réagissent toutes de la même façon).

Anatomie d'un scriptModifier

A la création, un script définit deux recettes (on les appelle "fonctions" en programmation) qui vont être exécutées (ou "appelées") à différentes occasions :

function Script:Awake()
    
end

function Script:Update()
    
end


  • la fonction Awake va être appelée quand un objet de jeu avec ce script est initialisé. Les objets de jeu peuvent être créés lorsqu'une scène est chargée ou à la demande tant que le jeu tourne.
  • La fonction Update va être appelée 60 fois par seconde pour chaque objet de jeu utilisant ce script.


Awake peut être utilisé pour s'occuper des tâches d'initialisation (si il y en a) et Update contiendra la logique de votre script au fil du temps.

Votre premier script : déplacer un objet de jeu au fil du temps !Modifier

Commençons avec quelque chose de simple : faire qu'un objet se déplace au fur et à mesure du temps.

Nous allons ajouter une ligne entre le début et la fin de la fonction Update :

function Script:Update()
    self.gameObject.transform:MoveLocal( Vector3:New( 0.01, 0, 0 ) )
end

Voilà !

self représente l'incarnation actuelle de votre script. En utilisant des points, on peut accéder à ses propriétés. Donc, self.gameObject est l'objet de jeu auquel notre composant de comportement scripté est rattaché. Cet objet de jeu possède, à son tour, un composant de tranformation (transform), qui gère la position, l'orientation et l'échelle de l'objet.

Enfin, le composant transform fournie une fonction nommée MoveLocal. En appelant cette fonction, on décale la position de notre objet par les valeurs spécifiées sur chaque axe. Dans notre cas : 0,01 en X, 0 en Y et 0 en Z.

Notez que lorsque qu'on appelle fonction ayant trait à un composant ou un objet, on doit utiliser un double point et non un point juste avant le nom de la fonction. Le double-point sert à indiquer à la "recette" / fonction qu'elle doit affecter l'objet définie à gauche du double-point.

Prendre des décisions : bouger lorsqu'une touche est enfoncéeModifier

On peut rendre notre jeu interactif en ajoutant des conditions. Les blocs if ("if" veut dire "si" en anglais) exécutent uniquement le code qu'ils contiennent si la condition est vrai.

function Script:Update()
    if CraftStudio.Input.IsButtonDown( "Fire" ) then
        self.gameObject.transform:MoveLocal( Vector3:New( 0.01, 0, 0 ) )
    end
end

Dans cet extrait de code nous allons appeler la fonction globale CraftStudio.Input.IsButtonDown (globale veut dire qu'elle est accessible de n'importe où), qui nous dit si un bouton est enfoncé (la condition est alors vraie), ou non (la condition ne sera donc être pas remplie et le code entre then et end sera sauté).

Souvenez-vous que notre fonction Script:Update est appelée 60 fois par seconde, donc l'objet bougera seulement au moment où une touche est enfonçée, et restera immobile le reste du temps.


Gérer des états (santé, armure ou autre ...)Modifier

Il est possible de réutiliser le même script pour plusieurs objets, tout en gérant indépendamment des états pour chaque objet. Pour créer un état (niveau de vie, nom ou quoi que ce soit) lié à une instance spécifique du script, il faut associer une variable à l'objet self("soi-même" en anglais). Par exemple, on peut ajouter un état qui définit la réserve de munition d'un objet :

function Behavior:Start()
    self.bullets = 100
end

function Behavior:Update()
    if [une condition qui fait tirer l'objet] then
        self.bullets = self.bullets - 1
        
        if self.bullets == 0 then
            print( "Plus de munitions !" )
        end
    end
end

Plusieurs ennemis différents peuvent utiliser ce script et auront chacun leur propre réserve de munitions, grace à l'utilisation de self. Si on avait simplement défini une variable globale bullets sans l'attacher à self, une seule et même réserve de munitions serait partagée par tous les ennemis.

Aller plus loinModifier

Il y a plusieurs manières d'interagir avec votre jeu :

  • Grâce aux scènes, en appelant les fonctions sur les objets de jeu ou ses composants, telles que la fonction MoveLocal que nous avons découvert juste avant.
  • Grâce à la table globale CraftStudio qui donne accès aux fonctionnalités comme les contrôles clavier / souris / joystick (CraftStudio.Input) ou encore des fonctions permettant le chargement d'une autre scène (CraftStudio.LoadScene).

Vous pouvez trouver la liste complète des fonctions et comment elles fonctionnent sur la page Référence Scripting.

Interférence d'un bloqueur de publicité détectée !


Wikia est un site gratuit qui compte sur les revenus de la publicité. L'expérience des lecteurs utilisant des bloqueurs de publicité est différente

Wikia n'est pas accessible si vous avez fait d'autres modifications. Supprimez les règles personnalisées de votre bloqueur de publicité, et la page se chargera comme prévu.

Sur le réseau FANDOM

Wiki au hasard