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()); }
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); }