top of page

Making pots!


J'ai réaliser un prototype de point & click un peu comme une game jam. Le but était rendre une simple action comme le drag & drop agréable et juicy. Le but du jeu : ranger des pots sur une étagère, attention de ne pas les casser! J'ai donc passé un certain temps sur les objet qu'on déplace, les pots.


Je vais expliquer étape par étape comment sont fait les pots. Commençons avec le rendu :

Rendu :

1 - Liquide : Le carré blanc si dessus représente l'espace ou le liquide sera affiché par le shader.



2 - Flou : Le masque noir représente l'espace ou le flou sera appliqué. Pour ce faire j'utilise la texture built in de l'URP _CameraSortingLayerTexture. Cela permet d'utiliser une copie de l'écran dans une couche donnée dans n'importe quelle shader. J'utilise donc le masque et la texture dans un shader qui floutera ce qui se trouve derrière les pots. Pour le flou du verre j'utilise du gradient noise pour distordre l'UV de l'image.


3 - Pot : Ensuite, vient le sprite pour le pot. Il sagit d'un sprite semi transparent.


4 - Outline : Au dessus de toute les autre couche se trouve l'outline, elle se fade selon si le pot est sous le curseur du joueur. C'est un simple contour fait sur photoshop.


5 - Ombre : Pour finir, j'utilise le masque de flou comme ombre de portée. Pour que l'ombre soit correctement affiché je créer un script qui repositionne l'ombre à chaque frame indépendamment de l'objet.

L'ombre est affiché uniquement sur le mur proche en utilisant les masque d'Unity.


Aléatoire : A chaque instantiation d'un pot, il est aléatoirement muni d'une étiquette (parfois non), d'un couleur de liquide parmi une liste prédéfinie, et d'une quantité de liquide "_Fill" entre 0 et 1. Cela permet à chaque partie d'avoir la sensation de manipuler des pots différents sans créer beaucoup de variant.




Physique des pots : Les pots ont une gravité assez élévé pour une physique plus réaliste. Pour les déplacer j'utilise un joint au niveau du curseur lors du clique. Sinon les pots sont sensible au collisions, et peuvent se casser si la force de collision est trop forte. Chaque type de pot à une résistance différente, et un poid différent. D'ailleurs selon la quantité de liquide "_Fill" le pot sera plus ou moins lourd et aura une physique différente lors du déplacement.


Fragments :

Chaque pot possède des fragments qui seront activé à la place du pot si il se casse. Les fragments sont de simple corp physique qui disparaissent après quelques secondes. Pour améliorer l'effet, j'ai fait un shader de "Hit Reaction" qui permet de faire clignoter un sprite rapidement dans une couleur donnée. Une force est appliqué à chaque fragment à la position de l'impact pour projeter les débris.



Animation du pot : Quand le curseur passe sur le pot celui s'agrandit légèrement, et revient à la taille de base quand le curseur s'en va. Si le joueur clique sur le pot, et quand il le relâche, le pot "bump" pour appuyer l'input. J'anime seulement le rendu du pot et pas le collider pour éviter des bug. J'utilise Dotween pour animer rapidement en C#.


Son des pots : Le son des pots vari selon la quantité de liquide dans le pot. Plus le pot et rempli pour le son est grave. La force de collision change aussi la puissance du son. J'utilise plusieurs samples que j'ai enregistré, et avec un pitch et un gain sur FMOD je rend l'effet plus audible.



Komentarze


bottom of page