Игра XNA как сделать змеиный хвост

Я пытаюсь понять, как сделать змееподобный хвост для игры XNA. Сама змея — это спрайт размером 34x20 пикселей, а мой спрайт хвоста — это спрайт 34x20. Но у меня проблемы с поиском способа создать историю. Моя первая идея состоит в том, чтобы сделать его основанным на плитках и запоминать посещенные плитки до предела длины хвоста. но это заставит хвост отставать, поэтому после того, как змея покинет плитку, останется хвост.

Есть ли у кого-нибудь идея, что я могу сделать хвост длиной X, который плавно следует за змеей, в игре XNA?

Змеиное движение основано на расположении пикселей и не может остановиться, только изменить направление!


person Androme    schedule 21.02.2012    source источник


Ответы (1)


Ник Гравелин написал Sammy the Snake для XNA некоторое время назад (хотя и в XNA 3), но я думаю, что вы найдете это наиболее полезным для своей игры.

В этом примере он использует List<Point> для хранения точек тела, что упрощает добавление новых частей тела:

bodyPoints.Add(new Point(2, 0));
bodyPoints.Add(new Point(1, 0));
bodyPoints.Add(new Point(0, 0));

Затем, когда дело доходит до рендеринга, вы можете просто перебирать точки тела:

for (int i = 1; i < bodyPoints.Count - 1; i++)
{
    DrawBody(
        spriteBatch, 
        bodyPoints[i], 
        bodyPoints[i - 1], 
        bodyPoints[i + 1]);
}
person Neil Knight    schedule 21.02.2012
comment
Да, это я знаю, но моя змея не простая пиксельная змея, а спрайтовая змея, но я думаю, что это единственный способ. - person Androme; 07.03.2012