LevelManager - Utilisation de base - Partie 04
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 :
- toute la carte à l'aide de la fonction setAllOpacity (non recommandée)
- un élément à l'aide de la fonction setOpacity qui peut être :
- un calque
- un objet
- un groupe de calque (applique l'opacité sur les calques qu'il contient)
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 :
restoreOpacitypour un seul élément (objet, calque ou groupe de calque)restoreAllOpacitypour la carte
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.
Me contacter