название может быть немного запутанным, но я пытаюсь получить ходячую анимацию, идущую со листа спрайтов. Его получили 8 разных ходячих позиций, и кажется, что каждый раз, когда они меняются, мне приходится снова загружать этот лист спрайтов, поскольку вы можете просто обрезать оригинал, если получите то, что я имею в виду, иначе он не покажет.Обработка, загрузка изображения и отображение при каждом его изменении
PImage Body;
int WidthSpacing = 64;
int HeightSpacing = 64;
int XCharacter = 1;
int YCharacter = 10;
int WalkingCounter = 0;
int WalkingSpeed = 2;
void setup()
{
background(200);
size (350, 240);
Body = loadImage("\\Sprites\\Player\\Male\\Default\\Light.png");
}
void draw()
{
WalkAnimation();
}
void WalkAnimation()
{
WalkingCounter++;
if (WalkingCounter == 1 * WalkingSpeed) { XCharacter = 1; LoadBody(); }
if (WalkingCounter == 2 * WalkingSpeed) { XCharacter = 2; LoadBody(); }
if (WalkingCounter == 3 * WalkingSpeed) { XCharacter = 3; LoadBody(); }
if (WalkingCounter == 4 * WalkingSpeed) { XCharacter = 4; LoadBody(); }
if (WalkingCounter == 5 * WalkingSpeed) { XCharacter = 5; LoadBody(); }
if (WalkingCounter == 6 * WalkingSpeed) { XCharacter = 6; LoadBody(); }
if (WalkingCounter == 7 * WalkingSpeed) { XCharacter = 7; LoadBody(); }
if (WalkingCounter == 8 * WalkingSpeed) { XCharacter = 8; LoadBody(); WalkingCounter = 0; }
}
void LoadBody()
{
background(200);
Body = loadImage("\\Sprites\\Player\\Male\\Default\\Light.png");
int X = XCharacter * WidthSpacing;
int Y = YCharacter * HeightSpacing;
Body = Body.get(X, Y, WidthSpacing, HeightSpacing);
Body.resize(200, 200);
image(Body, 150, 5);
}
Это было бы хорошо, если он не был для обработки занимает около 20 кадров, чтобы загрузить в изображение так его невозможно для меня, чтобы получить гладкую скорость ходьбы. любые идеи appriciated
Спасибо, я помещу их в списке массива, но изображение нагрузки только вызывается, когда спрайт меняется каждые 5 кадров поэтому оно не нагрузить то же изображение более чем один раз, если и посмотреть, что я имею в виду – Will
@ Да, он будет загружать одно и то же изображение более одного раза. Вы должны вызывать только 'loadImage()' один раз для каждого изображения. Здесь вы загружаете его каждый раз, когда вы меняете его, что действительно неэффективно. Просто сохраняйте изображения в памяти и заменяйте их, когда они вам понадобятся. Даже если вы меняете только каждые 5 кадров, это все равно 12 лишних нагрузок в секунду. –
О, я понимаю, что вы имеете в виду, yeh загружаю его один раз в настройках сейчас и просто обрезаю его каждый раз, когда он меняется, а не код, который я написал выше, спасибо :) – Will