Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.09.2011, 17:24

SFML - Animation/Berechnung

Hallo!
Ich tu mich mit der Berechnung des Bildausschnittes schwer.
Ich habe gerade das:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
    //Column berechnen
    float Column=divid/(int)factor;
    //Row berechnen
    float Row=divid%(int)factor;
    //Rect initialisieren
    sf::IntRect EnemyRect((Row*50), 0, ((Row*50)+50), (Column*50));
    //Rect setzen
    m_EnemySpr.SetSubRect(EnemyRect);

Die Größe vom Frame ist 50, aber ich habe Denkfehler drin, denke ich.

Rushh0ur

Frischling

Beiträge: 67

Beruf: Student Elektrotechnik

  • Private Nachricht senden

2

05.09.2011, 23:04

Rect Definition:

C-/C++-Quelltext

1
Rect (T LeftCoord, T TopCoord, T RightCoord, T BottomCoord)


Wieviele Spalten/Zeilen hat dein Bild, bzw in wieviele willst du es Teilen?
Was ist divid und factor?

Wie wärs mit (ungetestet):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
    int frameWidth  = BildBreite / (Anzahl der Frames in X - Richtung);    // Breite der Frame
    int frameHeight = BildHoeche / (Anzahl der Frames in Y - Richtung);  // Höche der Frame

    int frameIndex = blabliblubb; // von Links Nach Rechts und von Oben nach Unten

    int frameX = frameIndex % (Anzahl der Frames in X - Richtung);  // X Index berechnen
    int frameY = frameHeight / (Anzahl der Frames in X - Richtung);   // Y Index berechnen


    sf::IntRect EnemyRect((frameX *frameWidth), (frameY*frameHeight ), (frameX*frameWidth)+frameWidth, ((frameY*frameHeight)+frameHeight));

...


//Edit: Die Berechnung frameWidth bzw. frameHeight kannst du dir Sparen wenn du es Statisch machst und Gleich 50 setzten.

Mfg Rushh0ur