Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Michael JLI'ler
Anmeldedatum: 20.07.2002 Beiträge: 173 Wohnort: Münster / NRW Medaillen: Keine
|
Verfasst am: 10.09.2002, 15:37 Titel: |
|
|
eine variable deklarieren, die die zeit der letzten bewegung speichert. differenz zw aktueller und letzter zeit messen und mit der pixelzahl pro sekunde, um die bewegt werden soll, multiplizieren _________________ Es geht auch ohne  |
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 10.09.2002, 17:16 Titel: |
|
|
Sieht das ganze dann in etwa so aus
Code: |
Differenz = thisTime-lastTime;
//Bewegung
(int)x += (int)dx * Differenz;
(int)y += (int)dy * Differenz;
|
|
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 11.09.2002, 08:32 Titel: |
|
|
Also so funktionierts schonmal nicht Wahrscheinlich weil ich dieses ...pro Sekunde... nicht beachtet hab, aber wie ist des genau gemeint? |
|
Nach oben |
|
 |
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 11.09.2002, 13:09 Titel: |
|
|
hm, das müsste doch eigentlich funktionieren.
VergangeneZeit = Jetzt - Vorher;
x += GeschwindigkeitProSec * VergangeneZeit;
y += ....
allerdings muss VergangeneZeit dann in sec sein und du musst floats verwenden ansonsten bewegt es sich nicht. |
|
Nach oben |
|
 |
Gast
|
Verfasst am: 11.09.2002, 15:07 Titel: |
|
|
Achso natürlich!!
Hab bis jetzt immer int und 1000stel Sekunden benutzt. Probiers gleich mal so aus.  |
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 11.09.2002, 15:09 Titel: |
|
|
Ups.... wurde gar nich angemeldet |
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 11.09.2002, 15:33 Titel: |
|
|
Also meine Movefunktion sieht jetzt so aus und da läufts total langsam:
Code: |
void Sprite::Move(float SpriteDX,float SpriteDY)
{
thisTime = (timeGetTime()/1000);
if(lastTime!=0)
{
Abstand = thisTime - lastTime;
}
lastTime = (timeGetTime()/1000);
x += SpriteDX * Abstand;
y += SpriteDY * Abstand;
}
|
Muss ich mit den Pixelangaben SpriteDX und SpriteDY noch irgendwas machen? Oder muss ich trotz dieser Funktion noch ne Framerate festlegen? |
|
Nach oben |
|
 |
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 11.09.2002, 16:02 Titel: |
|
|
was liefert timeGetTime zurück? Sekunden oder millisekunden?
Wenns zu langsam ist dann stell die geschwindigkeit n bischen höher, über SpriteDX und SpriteDY.
Eine Framebremse brauchst du eigentlich nicht, du kannst aber einen framecounter einbauen um zu gucken ob das prog so lahm läuft oder ob du nur kleine geschwindigkeiten eingestellt hast. |
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 11.09.2002, 16:26 Titel: |
|
|
Frames hab ich normal(75). Aber es läuft nicht richtig langsam und flüssig, sondern stockend.
Aber ich glaub ich benutz die Funktion falsch, weil der Stockt im Sekundentakt(Bewegung um 3 Pixel(SpriteDX/DY),eine Sekunde vergeht, nächste Bewegung). |
|
Nach oben |
|
 |
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 11.09.2002, 16:42 Titel: |
|
|
meinst du , dass das objekt jede sekunde um 3 pixel weiter springt?
hast du für x und y auch floats verwendet? |
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 11.09.2002, 19:15 Titel: |
|
|
Hab ich jetzt gemacht aber funktioniert immer noch nicht.(immer noch jede Sekunde 3 Pixel
P.S. Muss ich bei float-Variablen eigentlich immer das .0f hinzufügen? |
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 11.09.2002, 19:29 Titel: |
|
|
Ich glaub ich hab den Fehler gefunden:
Die Koordinaten sind zwar float aber die Drawfunktion arbeitet ja mit BltFast und da sind die Parameter int. Kann des daran liegen? |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 11.09.2002, 19:33 Titel: |
|
|
Nein, spätestens beim Blitten musst du die Werte runden.
Aber sag mal, was gibst du für die beiden Deltas an? _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 11.09.2002, 19:35 Titel: |
|
|
Deltas?! Was ist das  |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 12.09.2002, 15:14 Titel: |
|
|
Du nennst deine Variablen SpriteDX und SpriteDY ohne zu wissen was das heißt? O.o
DX = Delta X ... das solltest du aus dem Matheunterricht kennen -> Steigung bei linearen Funktionen. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
|