Witam, może na początek podam wycinek gry żeby było widać co jest nie tak :
jak widać elementy węża nie układają się równomiernie...
Oto fragmenty kodu odpowiedzialne za ich ułożenie:
const float mult = 1.2f;
// (...)
Snake::Snake(int n, sf::Color bodyColor, sf::Vector2f size, sf::Vector2u windowSize)
: m_snake(n) {
int actX = windowSize.x / 2.f; //pierwsze element (głowa węża) jest na środku ekranu, typ int jest tu celowy by zaokrąglić
int actY = windowSize.y / 2.f;
m_gameWindowDims = windowSize;
m_actualDirections = SnakeDirections::LEFT; //tam sprawy z poruszaniem się...
m_lastDirectionsMove = SnakeDirections::NOTHING;
for (int i = 0; i < n; ++i) {
m_snake[i].setFillColor(bodyColor);
m_snake[i].setSize(size);
m_snake[i].setOrigin(size.x / 2.f, size.y / 2.f);
m_snake[i].setPosition((i*size.x*mult+actX), actY); //sedno sprawy
}
}
najważniejsza część:
m_snake[i].setPosition((i*size.x*mult+actX), actY);
+actX - zaczynamy od środka dlatego tą zmienną dodajemy do wyniku
i*mult*size.x - kolejne segmenty to numer segmentu * wielkość każdego segmentu * mnożnik ( odpowiedzialny za wyznaczenie odległości między elementami )
Już się długi czas nad tym zastanawiam i nie mam pojęcia co zawaliłem :/
Z góry jestem bardzo wdzięczny za pomoc.