Der Titel könnte ein wenig verwirrend sein, aber ich versuche, eine gehende Animation von einem Sprite Sheet zu bekommen. Es hat 8 verschiedene Laufpositionen und jedes Mal, wenn es sich ändert, muss ich das Sprite-Blatt wieder laden, um das Original zu schneiden, wenn man das bekommt, was ich meine, sonst wird es nicht angezeigt.Verarbeiten, Bild laden und jedes Mal anzeigen, wenn es geändert wird
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);
}
wäre diese in Ordnung, wenn es für die Verarbeitung dauert etwa 20 Frames ist nicht so sein unmöglichen in einem Bild zu laden für mich eine glatte Gehgeschwindigkeit zu bekommen. Alle Ideen sind
appriciated
Danke, werde ich sie in der Array-Liste setzen, aber die Last Bild nur dann aufgerufen wird, wenn das Sprit alle 5 Frames ändert, so dass es das gleiche Bild mehr laden tut als einmal, wenn u sehen, was ich – Will
bedeuten @ Will Ja, es wird das gleiche Bild mehr als einmal laden. Sie sollten 'loadImage()' nur einmal für jedes Bild aufrufen. Hier laden Sie es jedes Mal, wenn Sie es ändern, was wirklich ineffizient ist. Bewahren Sie die Bilder einfach im Speicher auf und tauschen Sie sie aus, wenn Sie sie brauchen. Selbst wenn Sie nur alle 5 Frames wechseln, sind das noch 12 unnötige Ladungen pro Sekunde. –
oh ich sehe, was du meinst, yeh ich lade es einmal im Setup jetzt und nur crop es jedes Mal, wenn es sich ändert statt der Code ich oben gepostet, danke :) – Will