Exemple #1
0
    public void AddPart()
    {
        GameObject g = Instantiate(snakePart, ultimaParte.transform.position, ultimaParte.transform.rotation);

        SnakePart ultimaParteP = ultimaParte.GetComponent <SnakePart>();
        SnakePart part         = g.GetComponent <SnakePart>();

        g.name = "parte" + numParts;
        ultimaParteP.SetNextPart(g);
        ultimaParte        = g;
        g.transform.parent = snake.transform;
        numParts++;

        part.SetNextPosition(ultimaParteP.GetNextPosition());
    }
Exemple #2
0
    private void CalculaNextPosition(SnakePart part)
    {
        Vector2 currentDirection     = part.GetCurrentDirection(); //dirección actual
        Vector2 currentPosition      = part.GetPrevPosition();     //posición desde la que calculamos la siguiente
        float   desplazacimentoTotal = part.getWidth();            //cuanto desplazamiento entre prev y next ha de existir (es el ancho del sprite de la serpiente)

        Vector2 nextPosition = new Vector2(currentPosition.x + (desplazacimentoTotal * currentDirection.x), currentPosition.y + (desplazacimentoTotal * currentDirection.y));

        //asignamos la anterior dirección como siguiente dirección de la siguiente parte si tiene siguiente parte
        if (part.GetNextPart())
        {
            part.GetNextPart().GetComponent <SnakePart>().AddDirection(part.GetCurrentDirection());
        }

        //asignamos la nueva siguiente posición calculada
        part.SetNextPosition(nextPosition);
    }