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

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

11

02.06.2010, 18:39

Mir ist wieder eine Frage aufgekommen, als ich die Sprites bewegen wollte:
Und zwar werden meine Sprites so bewegt:

C-/C++-Quelltext

1
2
3
4
5
6
float ElapsedTime = App.GetFrameTime();
...
if (App.GetInput().IsKeyDown(sf::Key::Up)){
    playerSprite.Move(0, -100 * ElapsedTime);
}
...

Das Problem daran ist, wenn ich mit der Maus über das Fenster gehe, erhöt sich ja die Framerate und die Bewegung wird schneller.
Außerdem dauert es immer 1sekunde, bis sich das Sprite bewegt...
kann ich das noch anders hinbekommen?
MfG R3DL10N

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

12

02.06.2010, 20:20

so müsste sich das sprite 100pixel die sekunde bewegen.
schreib mal

C-/C++-Quelltext

1
const float ElapsedTime = App.GetFrameTime();

vllt änderst du den wert ohne es zu wollen.
rufst du die updatefunktion auch jedes frame auf?
anders kann ichs mir nicht erklären.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

13

03.06.2010, 19:40

von der Update - Funktion habe ich noch nie glesen...
Wo muss ich die denn einbauen und wie???
Ich habe übrigens den Maximalen Frame Wert auf 120 gesetzt ;)
MfG R3DL10N

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

14

03.06.2010, 19:55

okay... so weit bist du ncoh nicht sry.
mit updatefunktion meinte ich zb. diesen teil:

C-/C++-Quelltext

1
2
3
if (App.GetInput().IsKeyDown(sf::Key::Up)){
    playerSprite.Move(0, -100 * ElapsedTime);
}


wenn du dir z.b. eine spielerklasse erstellst sollte diese eine Update und eine Draw/Render funktion enthalten die dann z.b. die position ändern, lebenspunkte aufladen usw. und natürlich den spieler zeichnen. also gibt es diese funktion noch nicht und du musst sie selbst definieren.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

15

05.06.2010, 15:04

ok aber wie kann ich verhindern, dass das Prog immer erst ne sekunde wartet, bis das sprite bewegt wird?
das lässt alles etwas plump aussehen, wenn das game am ende "hakt"...

außerdem würde mich noch interessieren, wie ich ein animiertes sprite verwenden kann.
ich meine gelesen zu haben, dass -insane- soein tutorial plant, aber ich würde das doch gerne jetzt schon wissen :D
MfG R3DL10N

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

16

08.06.2010, 18:11

hm.. das scheint keiner zu wissen...
also nochmal: ich habe jetzt dieses nette bild hier gebastelt.
Jetzt möchte ich, dass phase2(das zweite Bild in der Reihe) angezeigt wird, wenn der Spieler gerade springt,
phase3, wenn er wieder herunterfällt. phase1 wird natürlich immer angezeigt, wenn der Spieler nicht springt.
Wie bekomme ich soetwas hin?

was anderes: kennt jemand ein Open-Source Programm, dass mit SFML läuft(also 2D)?
dann könnt ich mir ja mal ansehen, wie die das mit animierten Sprites und der Physik und Maps etc.
gelöst haben. :D
MfG R3DL10N

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

17

08.06.2010, 18:16

animierte sprites: am einfachsten ists wohl wenn du eine suchmaschine bemühst oder einfach das bild mit "SetImage" umstellst.(dafür bräuchtest du natürlich drei einzelbilder/datein)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

18

08.06.2010, 18:34

hm. dann werde ich wohl setImage nutzen...


//Edit: Wo kriege ich den eine Physik Engine her? Ich habe mir Box2D heruntergeladen, soll ich daraus die Physik beziehen?
//Edit2: Außerdem ist da ja noch das Problem mit den Bewegungen: Hier
MfG R3DL10N

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »R3D L10N« (08.06.2010, 18:48)


19

08.06.2010, 20:00

Wenn dir Bewegung Probleme macht, dann solltest du sowas wie Physik weglassen. Mach das was du vor hast so einfach wie möglich.


Zur Bewegung.
Die simpelste Variante wäre es wohl ein Array für jede Animation anzulegen, in der du die Pointer zu den passenden Texturen speicherst.

Bsp
sf:sprite *laufen = new sf:sprite[3];
laufen[0] = spriteLaufen1;
laufen[1] = spriteLaufen2;
laufen[2] = spriteLaufen3;

sf:sprite *springen = new sf:sprite[3];
springen[0] = springenLaufen1;
springen[1] = springenLaufen2;
springen[2] = springenLaufen3;

usw.

dazu noch 2 Hilfsvariablen
char aktuellesBild;
char aktuelleAnimation;


Das ist zwar weder gut programmiert oder sonst was aber löst dein Problem auf eine simple Art.
Damit du noch Speicher sparen kannst, such doch mal hier oder bei Google nach einem Beispiel für einen Ressourcen Manager.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

20

08.06.2010, 20:04

ich glaub in der sfml ist das umstellen des images besser. besonders wenn man die position des sprites verändert.(sonst müsste man ja immer die positionen aller drei sprites ändern)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige