SFML 2.5 - Charakter animieren

SFML 2.5 - Charakter animieren

Spritesheet Animation

Um einen Charakter mit SFML 2.5 zu animieren benötigt man natürlich zu aller erst einen Spritesheet mit allen Frames der jeweiligen Animation.

Spritesheet mit 4 Frames

Charakter animieren

setTextureRect

In SFML besitzt die Sprite Klasse die Methode setTextureRect. Mit dieser kann ein bestimmter Bereich der Textur ausgewählt werden, welcher gezeichnet wird. Der Rest wird dann quasi ausgeblendet.

Jeder Farbkasten ist 32x32 Pixel groß!

Wir haben also ein Sprite namens colors und möchten, dass am Ende nur eine Farbe auf dem Bildschirm gezeichnet wird und nicht alle vier. Was tun wir? Richtig, wir benutzen setTextureRect.

sf::Texture texture;
texture.loadFromFile("colors.png");

sf::Sprite colors;
colors.setTexture(texture);
**colors.setTextureRect(sf::IntRect(32, 0, 32, 32));

Was bedeuten die Parameter 32, 0, 32, 32?

Die Zahlenfolge sieht vielleicht auf den ersten Blick kryptisch aus, ist sie aber nicht. Der Spritesheet colors.png besteht aus vier Farbkästchen die alle jeweils 32x32 Pixel groß sind. Das bedeutet:

  • Orange hat die Koordinate (0, 0)
  • Grün die Koordinate (32, 0)
  • Blau die Koordinate (64, 0)
  • Lila die Koordinate (96, 0)

(32, 0, 32, 32) bedeutet also, Grün wird angepeilt. Die restlichen zwei Parameter also (32, 0, 32, 32) sind einfach nur einmal die Breite und einmal die Höhe des angepeilten Farbkasten. Deshalb ist es bei einem Spritesheet wie diesem, wo alle Frames die selbe Größe haben, auch recht einfach. In dem Fall sind nämlich nur die ersten zwei Parameter relevant.

Nächste Seite
Animation, na Klasse!
Hinterlasse gerne einen Like oder Kommentar (~‾▿‾)~
Name Text