Page 1 sur 1

Problème pour faire un queue de snake.

Publié : 18 Juin 2021 20:56
par le44
Bonjour!
Comme le titre l'indique j'ai un problème pour faire une queue style "Snake" en 2d.
Voici mon code:

Code : Tout sélectionner

worm1 = GameObject.Find("worm1");
        int isHeadInt = 0;//cette variable sert a savoir si c'est un segment du corps ou la tete, 0 pour commencer
        int count;//variable pour savoir quel segment il faut suivre. Elle vaut -1 si c'est la tete
        if (worm1.GetComponent<Player>().corps.ElementAtOrDefault(worm1.GetComponent<Player>().corps.Count - 2))
            count = worm1.GetComponent<Player>().corps.Count - 2;
        else
            count = -1;
        while (true) //boucle
        { 
            yield return new WaitForEndOfFrame();
            transform.rotation = worm1.transform.rotation;
            GetComponent<SpriteRenderer>().color = worm1.GetComponent<SpriteRenderer>().color;
            if (worm1.GetComponent<Player>().corps.ElementAtOrDefault(count) != null && isHeadInt != 1)
            {
                isHeadInt = 2;
                GameObject taleSegment = worm1.GetComponent<Player>().corps[count];
                if (worm1.transform.rotation == Quaternion.Euler(0, 0, 180)) //tout est le système de décalage en fonction de l'orientation de la tete(tout les segments suivent la tete)
                    transform.position = new Vector3( taleSegment.transform.position.x, include.transform.position.y + offset, -7.99f);
                if (worm1.transform.rotation == Quaternion.Euler(0, 0, -90))
                    transform.position = new Vector3( taleSegment.transform.position.x - offset, include.transform.position.y, -7.99f);
                if (worm1.transform.rotation == Quaternion.Euler(0, 0, 90))
                    transform.position = new Vector3( taleSegment.transform.position.x + offset, include.transform.position.y, -7.99f);
                if (worm1.transform.rotation == Quaternion.Euler(0, 0, 0))
                    transform.position = new Vector3( taleSegment .transform.position.x, include.transform.position.y - offset, -7.99f)
            }
            else if (isHeadInt != 2)
            {
                isHeadInt = 1;
                if (worm1.transform.rotation == Quaternion.Euler(0, 0, 180))
                    transform.position = new Vector3(worm1.transform.position.x, worm1.transform.position.y + offset, -7.99f);
                if (worm1.transform.rotation == Quaternion.Euler(0, 0, -90))
                    transform.position = new Vector3(worm1.transform.position.x - offset, worm1.transform.position.y, -7.99f);
                if (worm1.transform.rotation == Quaternion.Euler(0, 0, 90))
                    transform.position = new Vector3(worm1.transform.position.x + offset, worm1.transform.position.y, -7.99f);
                if (worm1.transform.rotation == Quaternion.Euler(0, 0, 0))
                    transform.position = new Vector3(worm1.transform.position.x, worm1.transform.position.y - offset, -7.99f);
            }
            yield return new WaitForSeconds(worm1.GetComponent<Joueur1>().toWait);
Le problème est que les parties du corps ne suivent pas comme dans un snake traditionel, elle vont un peu n'importe ou puis se suivent a la fin (s'empilent).
Si il ya un problème de compréhension dites-le.

Re: Problème pour faire un queue de snake.

Publié : 19 Juin 2021 10:15
par Max
Bonjour,

j'avoue ne pas trop comprendre ton code, qui semble n'être un morceau de ton script.
Pour faciliter une aide éventuelle, poste ton script en entier.
De plus, si c'est issu d'un tuto, n'hésite pas à fournir le lien vers celui-ci.

Re: Problème pour faire un queue de snake.

Publié : 19 Juin 2021 12:04
par jones
salut, je te préviens, je suis débutant. Mais j'ai pensé à un idée après avoir vu ce tuto sur un système de particule utilisé comme trail. Donc en l'adaptant, tu pourras avoir un queue de Snake parfaite. Quant à la collision c'est aussi possible en voyant ce 2 éme tuto ;)

https://www.youtube.com/watch?v=agr-QEs ... Demkeys%29

https://www.youtube.com/watch?v=zMgSq3O ... nMaskGames

;)

Re: Problème pour faire un queue de snake.

Publié : 19 Juin 2021 19:52
par le44
Bonjour et merci pour votre aide!
Tout le code que j'ai posté est la partie qui gère la queue et les segments.
le code est sensé mettre un segment a la position du segment devant +/- un décalage pour voir les segements.
Les segments sont des prefabs avec ce script.