Tien tien... C'est la fin des vacances ?
en fait il y deux questions en une dans ta demande:
pour la question n°1:
la méthode la plus simple consiste à créer un "Sprite mask" avec la forme que tu veux (en l'occurence dans mon exemple un long rectangle) et un "SpriteRenderer" configuré en mode "inside mask" qui contient la texture ou le dessin que tu veux faire apparaître dans ton "SpriteMask".
Important : je ne sais pas si tu as déjà utilisé des sprite mask, dans le doute note bien que la forme de ton mask est donnée par le sprite que tu lui met en référence, donc si tu veux un mask rectangulaire il te faut un sprite de forme rectangulaire.
C'est un peu chiant à expliquer par écrit, je sais pas si je suis bien clair, alors je te fais quelques screenshots:
étape 1: tu créer un spriteRenderer avec la texture ou dessin que tu veux faire apparaître dans le mask:
étape 2: tu n'oublie pas de le paramétrer en mode "Visible INSIDE mask"
étape 3: tu créer un SpriteMask en lui référencant un sprite qui a la forme que tu souhaite (la mon dessin qui défini la forme s'appel "bibli1")
La petite astuce pour obtenir ton effet c'est de positionner le mask tout en haut du canvas, comme ça quand le mask descendra il fera apparaître la texture du Sprite Renderer :
Note que dans un canvas, normalement on utilise de préférence des components de type "image" plutôt que des "sprites Renderer" mais ça marche aussi avec eux moyennant quelques bidouilles. Pour ta demande j'ai été au plus simple, il y a surement pleins d'autres manières de faire ce que tu souhaite!!
Ensuite on arrive à ta deuxième question:
comment déplacer le mask?
là il faudrait plus d'infos sur la manière dont tu veux le déplacer...
si tu veux juste le déplacer de haut en bas (et inversement) avec deux touches, un simple code du genre peut faire le taf (à placer sur l'objet qui contient le mask):
Code : Tout sélectionner
public class MoveThisShit : MonoBehaviour
{
// Start is called before the first frame update
public float speed = 1.5f;
void Update ()
{
if (Input.GetKey(KeyCode.UpArrow))
{
transform.position += Vector3.up * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.DownArrow))
{
transform.position += Vector3.down * speed * Time.deltaTime;
}
}
}