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

31.12.2010, 18:45

SFML sf::Shape schnell bewegen

Wenn ich mithilfe folgender Formel meinen Ball über den Bildschirm bewegen will, führt das bei hoher Geschwindigkeit dazu das der Ball "springt", d. h. es sieht nicht mehr flüssig aus. Abhilfe kann ich zwar schaffen in dem ich die Frameratebegrenzung rausnehme, aber da muss es doch bessere Lösungen geben oder?

C-/C++-Quelltext

1
Position.x = Spielball.GetPosition().x + Richtung.x *Geschwindigkeit* ElapsedTime;

2

31.12.2010, 19:19

Naja, das ist klar, dass er springt. Wenn du z.B. folgendes Szenario nimmst:
Richtung.x = 1
Geschwindigkeit = 100;
ElapsedTime = 2;
dann bewegt er sich in einem Frame 1*100*2 = 200 Pixel nach rechts, da ist es klar dass er in deinen Augen springt. Aber das liegt nicht an SFML, sondern an der absurd hohen Speed.

3

31.12.2010, 19:38

C-/C++-Quelltext

1
ElapsedTime = App.GetFrameTime();


Da dürften eigentlich nicht so hohe Werte erreicht werden?!

4

31.12.2010, 20:01

Ja, was hast du denn als Geschwindigkeit und als Richtung für Werte?

5

31.12.2010, 20:08

Die Richtungswerte liegen zwischen -1 und 1, die Geschwindigkeit bei 200. Wobei ich die Geschwindigkeit gerne höher hätte, so ist mir das zu lahm.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

01.01.2011, 15:02

Naja ich würde sagen es kommt auch auf die Größe der Figur an. Wenn dein Sprite bspw. 10x10px groß ist, dannhätten wir bei 1*200*0.2 = 40px dennoch deutliche Sprünge zu sehen.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

7

01.01.2011, 16:38

10x10px groß ist, dannhätten wir bei 1*200*0.2 = 40px dennoch deutliche Sprünge zu sehen.

du kannst bei 5fps noch spielen?
sagen wir die frametime liegt bei 0.02sek(50fps) dann liegt die höchste geschwindigkeit bei der die kein pixel entgeht bei 500pixel die sekunde. bei höheren geschwindigkeiten wärs am einfachsten kleine schritte zu machen.
"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?

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

8

01.01.2011, 17:39

du kannst bei 5fps noch spielen?

Ja das ist mein Spieltempo...sonst sind Spiele immer so hektisch ;).
War aber natürlich ein Denkfehler meinerseits.

9

01.01.2011, 20:45

Hallo NachoMan, wie meinst du das mit kleine Schritte machen? Kleiner als jedes Frame zeichnen geht doch nicht oder?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

10

02.01.2011, 00:18

bei hohen geschwindigkeiten denk ich eher probleme mit der kollision. ich glaub nicht, dass man bei 60fps sehr große sprünge sieht. aber vielleicht könntest du motionblur verwenden. dafür musst du einfach mit halber transparenz an der alten position oder zwischen der alten und der neuen position zeichnen(bringt natürlich nur was wenn die frametimes nicht zu kurz sind. d.h. fps auf 60 begrenzen). das mehrfache zeichnen kann allerdings für performanceprobleme sorgen wenn du sehr viele objekte hast. in dem fall würd ichs mit sf::PostFX versuchen. hier eine mögliche lösung.

es wär mal ganz interessant zu wissen was für ein objekt überhaupt so schnell ist.
"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?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (02.01.2011, 00:58)


Werbeanzeige