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);
Si il ya un problème de compréhension dites-le.