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

SlinDev

Treue Seele

Beiträge: 142

Wohnort: Lübeck

Beruf: Programmierer

  • Private Nachricht senden

31

31.10.2015, 16:29

r benutzt du garnicht, kannst du also wegschmeißen.
Die Multiplikation von v mit k sollte erst nach dem bewegen passieren. Dabei solltest du k näher an 1 wählen, vielleicht 0.95 oder so.
dT brauchst du mit deiner Update schleife nicht, kannst du also auch kicken. Mir ist auch nicht ganz klar was das dT.Zero macht. dT sollte eigentlich die Zeit sein, die ein Update Zyklus bei dir braucht, ist in deinem Fall also immer konstant und wäre sonst ein eventuell etwas geglätteter Wert der Zeit des vorherigen Frames.
k sollte dann übrigens auch von dT abhängig sein, wobei einfach multiplizieren falsch wäre. Stattdessen würde man wohl eher v.x -= v.x*dT*k machen oder sowas. In deinem Fall ist das multiplizieren aber okay.
Angenommen du benutzt dT würdest du damit auch noch v in dem move multiplizieren.

Ich weiß natürlich nicht ob davon jetzt irgendwas mit deinen Problemen hilft, das sind aber die einzigen Dinge die mir auffallen.

32

31.10.2015, 17:41

Edit: Ack war blödsinn!

Wird dT als Referenz übergeben?
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Koschi« (31.10.2015, 17:49)


cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

33

31.10.2015, 17:49

Schon mal danke für die ganzen Hilfreichen Antworten :). Hier könnt ihr euch (wenn ihr wollt) das überarbeitete Spiel herunterladen. Für weiteres Feedback bin ich gerne offen :)

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

34

31.10.2015, 17:51

Edit: Ack war blödsinn!

Wird dT als Referenz übergeben?

Nö.

35

31.10.2015, 17:56

Wieder ein Thema füe den Debugger! Schau dir mal dt in 2 unterschiedlichen update Aufrufen an.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

36

31.10.2015, 17:58

dt in 2 unterschiedlichen update Aufrufen an.

Wie meinst du das jetzt? Soll ich einmal mit dT updaten und einmal ohne, oder habe ich das falsch interpretiert?

37

31.10.2015, 18:05

Wie meinst du das jetzt? Soll ich einmal mit dT updaten und einmal ohne, oder habe ich das falsch interpretiert?

Du sollst dir in der Update-Methode ein Breakpoint setzen, und schauen was dt für Werte hat (entsprechen sie deinen Erwartungen?)! Und das nicht nur beim ersten mal erreichen des Breakpoints sonder auch beim erreichen des 2te oder 3te oder 4te oder ... oder mehr mal.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

38

31.10.2015, 18:13

Für mich ist das ein bisschen sehr hoch, oder sehe ich das falsch?


39

31.10.2015, 18:32

Für mich ist das ein bisschen sehr hoch, oder sehe ich das falsch?

Nein siehst du Richtig.

Nun noch mal nachdenken was da alles genau passiert!

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Gamstate Update-Methode (oder von was auch immer der Player update aufgerufen wird)

//hpp Gamestate
classe GameState
{
     sf::Time dieseZeit;
     ...
};
// cpp GameState Update-Methode
{
     mPlayer.update(dieseZeit)

}

// player update
void update(sf::Time dt)
{
    blabla*dt;

    if (v.x > maxvel)
    {
        v.x = maxvel;
    }
    if (v.x < -maxvel)
    {
        v.x = -maxvel;
    }

    dt.Zero
}
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

40

31.10.2015, 19:00

Nun noch mal nachdenken was da alles genau passiert!
Mal ganz doof gefragt: Muss ich dT als Referenz übergeben?

Werbeanzeige