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

28.11.2009, 17:56

Animations sachen messen (?)

Hallo,

Ich bin mal wieder an einem Problem in der
Programmierung mit der SFML gelangen, obwohl ich eigentlich
auch schon mit der SDL damit probleme hatte.
Undzwar weiß ich ehrlich gesagt nicht wie ich meine animation
messe das ich auf den ersten Versuch eine Perfekte
Animation bekomm.

Um genauer zu erklären was ich meine, also..
So sieht der Code auschnitt der Animations Funktion aus:
(nur ein beispiel)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
    GoRight.PushFrame(Frame(&Zahl, sf::Rect<int>(0, 0, 50, 87))); 
//Position der Zahl 1 im Bild

    GoRight.PushFrame(Frame(&Zahl, sf::Rect<int>(48, 0, 100, 87)));
//Position der Zahl 2 im Bild

    GoRight.PushFrame(Frame(&Zahl, sf::Rect<int>(92, 0, 150, 87)));
//Position der Zahl 3 im Bild

    GoRight.PushFrame(Frame(&Zahl, sf::Rect<int>(148, 0, 200, 87)));
//Position der Zahl 4 im Bild

und so sieht z.B das bild für die animation aus:

(Link)


Aus der 1 wird die 2 aus der 2 die 3 und aus der 3 die 4.
Nun ist das Problem, wie finde ich die Koordinaten heraus.

Soweit ich jetzt durch rum experimentieren verstanden hab,
steht die erste zahl für die breite, die zweite für die höhe,
die 3 für die x position (?) und die 4 für die y position (?).
........................ w h x y
-> also hier: ...(148, 0, 200, 87)));...
Also, was ich sagen will, wie finde ich die Zahlen hier
raus, für den ersten Frame, für den zweiten usw.
-> (148, 0, 200, 87))); //Diese zahlen

Ich hoffe man hat mich verstanden, obwohl ich es
vielleicht schlecht erklärt hab, aber besser gehts leider nicht.
Danke schonmal jetzt.

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

2

28.11.2009, 18:00

Öhm, ich verstehe dein Problem ehrlich gesagt nicht...

Du möchtest die Koordinaten des Sprites haben?
Oder die Koordinaten der Animation... ? Oder... Hä?


Jedenfalls, wenn du die Koordinaten des Sprites haben willst, lässt sich das einfach über das Rect des Sprites herausfinden.

Dafür gibt es die Funktion GetPosition() für Sprites ;)

3

28.11.2009, 18:09

Nein, argh, ich...
Ich muss immer die Zahlen erraten das ist mein problem
ich muss tausend mal an den Zahlen rumprobieren
bis z.B die animation zum Rechts laufen funktioniert
(im sinne von das sie so aussieht wie ich es will).

(Frame(&Zahl, sf::Rect<int>(148, 0, 200, 87))); //Diese Vier Zahlen
Die muss ich immer erraten, biss die Rechtslaufen animation
perfekt aussieht. Gibt es irgendein Programm, oder weiß weiß ich
mit dem man diese Zahlen (die 4) rausfinden kann?
Oder muss ich das mit einem Linial machen?
Wenn, ja wie oder wo?

Edit: Ich möchte nicht die Position des Sprites, sondern
eyyy.. *kopfschmerz* ich kann diese ... nicht erklären.
Wie muss ich das bild (die animation) abmessen das ich die
4 Zahlen da oben bekomm?

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

4

28.11.2009, 18:30

Die Animation ist ja als Sprite gespeichert, wobei jedes Frame einen i.d.R. gleich großen Teil dieses ausfüllt.

Seine Frage ist, wie man die Koordinaten bzw. die Höhe und die Breite jedes Frames herausbekommt, oder?

Mein Tipp: Die Größe gleich beim Erstellen festsetzen (z.B. 32x32 Pixel), dann kann nix Schiefgehen...

Ansonsten, wenn jedes Frame gleich groß ist, Nimm die Breite des gesamten Sprites, teile sie durch die Anzahl der Animationsframes in einer Reihe und voilá! Du hast schon mal die Breite... die x-Koordinaten kannst du dir dann sicher auch einfach berechnen ;)

Dann mach dasselbe für die Höhe.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

5

28.11.2009, 18:32

Und guck mal hier für die Parameter des Konstruktors sf::Rect()...

Zitat

template<typename T>
sf::Rect< T >::Rect ( T LeftCoord,
T TopCoord,
T RightCoord,
T BottomCoord
)

Construct the rectangle from its coordinates.


Parameters:
LeftCoord : Left coordinate of the rectangle
TopCoord : Top coordinate of the rectangle
RightCoord : Right coordinate of the rectangle
BottomCoord : Bottom coordinate of the rectangle


EDIT: Die Zahlen in dem Beispiel oben sollten eigentlich
(0,0,50,87)
(50,0,100,87)
(100,0,150,87)
und
(150,0,200,87)
sein...

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Werbeanzeige