LevelManager - Utilisation de base - Partie 04

< < LevelManager - Utilisation de base - Partie 03

Tutoriels

 


Dans ce tutoriel, vous apprendrez à gérer l'opacité.

 

L'opacité peut être appliquée sur un élément précis (calque, groupe de calque ou objet) ou sur tous les éléments.

L'opacité permet de rendre un objet plus ou moins transparent et qu'elle varie entre 0 et 1 inclusivement.

 

Vous pouvez rendre opaque :

 

 

Nous allons reprendre la carte utilisée dans le tutoriel précédent (avec ou sans le déplacement des joueurs, ce n'est pas obligatoire).
Dans l'exemple fourni, j'ai conservé le déplacement du joueur.

 

Changement de l'opacité sur toute la carte

On va appliquer une opacité de 0.5 à l'ensemble de la carte.

Dans la fonction love.load, à la fin, on va rajouter la ligne suivante :

LevelManager:setAllOpacity(0.5)

 

Je dois reconnaître que l'effet est un peu bizarre. On pourrait presque croire qu'on est dans une sorte de rêve.

 

Maintenant, changeons la couleur du fond avec la ligne suivante à la fin de love.load :

love.graphics.setBackgroundColor(1, 0, 0.5)

 

Et observons l'effet que cela donne :

 

Oui, je sais, c'est vraiment horribe !

Mais c'était surtout pour vous montrer que l'opacité ne permet pas de rendre les objets plus foncés, seulement plus transparent.

 

Retirons les 2 dernières lignes ajoutées pour revenir à notre carte originelle.
Ouf, ça fait moins mal aux yeux !

 

Changement de l'opacité sur un objet

On va maintenant transformer notre joueur 1 en un fantôme (c'est-à-dire changer son opacité pour qu'il devienne plus transparent) en appuyant sur la touche F. Et si on appuye une nouvelle fois dessus, il redevient normal.

Dans la fonction love.keypressed, on va rajouter un test pour contrôler si la touche F est appuyée.

if key == "f" or key == "F" then
end

 

Si c'est le cas, on va récupérer l'opacité de l'objet Player1.

local opacity = LevelManager:getOpacity(Player1)

 

Si sa valeur est plus petite que 1, on va la mettre à la valeur 1. Dans le cas contraire, on va positionner la valeur 0.5.

if opacity < 1 then
  LevelManager:setOpacity(Player1, 1)
else
  LevelManager:setOpacity(Player1, 0.5)
end

 

Voyons maintenant le résultat :

 

Restaurer l'opacité

Maintenant, il nous reste une dernière fonction à voir : restaurer l'opcaité.

Il est possible de le faire à l'aide des fonctions suivantes :

 

Pour un seul élément, par exemple, notre joueur 1 :

LevelManager:restoreOpacity(Player1)

 

Pour toute la carte, il suffit de renseigner la ligne suivante :

LevelManager:restoreAllOpacity()


Il faut savoir que la fonction restoreAllOpacity se base sur la fonction restoreOpacity pour restaurer l'opacité des éléments.

 



< < LevelManager - Utilisation de base - Partie 03

Tutoriels