Flüssige Bewegung Problem
Übersicht

Sterbendes LüftleinBetreff: Flüssige Bewegung Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Text entfernt | ||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm. Was genau soll denn daran nicht funktionieren? Bremsen ist das selbe wie Beschleunigen gegen die Fahrtrichtung. Wenn du also quasi stillstehst, wird das "Bremsen" bewirken, dass du plötzlich nach "hinten" fährst.
Ich denke, dass, was du vorhast (Bremsen bis zum Stillstand und nicht weiter, richtig?), ist gar nicht so einfach umsetzbar. Du müsstest einen Status einführen, der besagt, ob du nun bremst oder nicht (je Richtung). Wenn dieser false ist darf die Geschwindigkeit in entgegengesetzte Richtung grösser als 0 werden, sonst wird bei 0 abgeklemmt. Er wird true, wenn du zB in +x fährst (x-Geschwindigkeit >0) und die -x Taste anhaust, und false, wenn weder +x noch -x Taste gedrückt sind. mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, Totensturm.
Erst einmal weiß ich nicht, warum du FlushKeys() am Anfang deiner Schleife stehen hast - da werden doch ständig ALLE Eingaben gelöscht. Und was klappt denn beim Bremsen nicht? Ich nehme an, dein Bild bleibt nicht stehen, sondern rutscht weiter "zurück", obwohl du nichts mehr machst. Das liegt daran, dass deine Float-Variablen nicht, wie du dir wünschst, bei einem exakten Vielfachen von 0.1 bleiben, sondern ungenau werden: Addiere zwanzigmal 0.1 dazu und subtrahiere sie wieder, schwupps bist du bei 0.099999... und danach bei einer negativen Zahl gelandet und deine Bedingung > 0 greift nicht mehr. Abhilfe? Nimm z.B. für die Speed-Variablen lieber Integer-Größen Code: PLAYER_SPEED_RIGHT% = PLAYER_SPEED_RIGHT% - 1
und verkleinere sie beim echten Bewegen mit einem Float-Verkleinerungsfaktor Code: PLAYER_X# = PLAYER_X# + 0.1 * PLAYER_SPEED_RIGHT%
|
||
- Zuletzt bearbeitet von BlitzMoritz am So, März 06, 2011 13:15, insgesamt 2-mal bearbeitet
Sterbendes Lüftlein |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Text entfernt | ||
Sterbendes Lüftlein |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Text entfernt | ||
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Irgendwie verpassen wir ständig unsere Edits und ich antworte 2 Sekunden zu spät ![]() Oben siehst du es ja: ich hab' ein paar Codezeilen ergänzt. ![]() |
||
- Zuletzt bearbeitet von BlitzMoritz am So, März 06, 2011 15:16, insgesamt einmal bearbeitet
Jumper |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So geht's auch mit Float. Das Image bremst bis zum Stillstand, wenn keine der Pfeiltasten gedrückt wird.
BlitzBasic: Global IMG = LoadImage("bild.png") |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group