Problème pour faire un queue de snake.

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
le44
Messages : 28
Inscription : 21 Oct 2020 15:15

Problème pour faire un queue de snake.

Message par le44 » 18 Juin 2021 20:56

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.

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

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

Message par Max » 19 Juin 2021 10:15

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.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

jones
Messages : 39
Inscription : 29 Jan 2021 11:01

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

Message par jones » 19 Juin 2021 12:04

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

;)

le44
Messages : 28
Inscription : 21 Oct 2020 15:15

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

Message par le44 » 19 Juin 2021 19:52

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.

Répondre

Revenir vers « Scripting »