I am trying to implement basic Snake game with movement based on timestep. For now I’ve got something along those lines:
Update function:
glm::vec2 headPosition = glm::vec2(m_segments.begin()->m_sprite.get_position());
float angle = m_segments.begin()->m_sprite.get_angle();
m_segments.begin()->move();
for (auto it = m_segments.begin() + 1; it != m_segments.end(); it++)
{
glm::vec2 oldPosition = it->m_sprite.get_position();
float oldAngle = it->m_sprite.get_angle();
it->m_sprite.set_position(headPosition);
it->m_sprite.set_angle(angle);
headPosition = oldPosition;
angle = oldAngle;
}
Move function:
glm::vec2 position(m_sprite.get_position());
position.x += cosf(glm::radians(90.0f - m_sprite.get_angle())) * VELOCITY_SCALAR;
position.y += -sinf(glm::radians(90.0f - m_sprite.get_angle())) * VELOCITY_SCALAR;
m_sprite.set_position(position);
Basically I set next segment position to the old position of previous segment. As expected spacing between those segments is equal to timestep value. How can I calculate position so I can manipulate spacing between those segments?