sorry das ich auch mal wieder belästigen muss, allerdings habe ich da ein kleines Problem mit einem meiner Programm. Es rendert ein Dreieck, was sich nach rechts bewegt, vom Rand abprallt und die Richtung ändert, usw. Dabei soll das Dreieck eigentlich innerhalb von vier Sekunden kommplett schwarz werden und dann wieder auftauchen. Das tut es auch, allerdings scheint das TBM da fehlerhaft zu sein. Auf meinem Rechner ist es mir nicht aufgefallen aber auf einem Schnellerem habe ich dann bemerkt, dass das Dreieck immer schneller fadet.
Schaut euch mal bitte den Code an und sagt mir worans liegt.
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Du addierst auf j jedes Frame den Zeitfaktor drauf und auf i jeden Frame j. Das sollte dir schon spanisch vorkommen.
Im ersten Frame mag noch alles klappen aber im zweiten besteht i bereits aus dem Zeitfaktor des ersten Frames und plus j (also Zeitfaktor des ersten Frames und des zweiten Frames). Im dritten Frame geht der Zeitfaktor des ersten Frames bereits 3 mal in i ein...
Warum passt du i nicht direkt an sondern gehst den Umweg über j?
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Ein Freund und ich habe das Programm vor ungefähr zwei Wochen geschrieben und wir haben damals j verwendet, weil das Ganze mit nur i nicht funktioniert hat. Jetzt habe ich aber herasugefunden warum: die Codezeile
i:=i+(Zeitfaktor/1)*-22.5; wird von Delphi warum auch immer nicht ausgeführt. Ändert man das ganze zu
i:=i+(Zeitfaktor/-1)*22.5; dann geht alles.
Das versteh ich nun wieder nicht ganz, was soll den in der Zeile "i:=i+(Zeitfaktor/1)*-22.5" das (Zeitfaktor/1) ergeben Zeitfaktor ist doch gleich (Zeitfaktor/1) oder habe ich jetzt was verpaßt ?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Deine Berechnung ist irgendwie komisch.
Die typische Berechnung bei TimeBasedMovement ist so, dass sagst es soll sich 200 Pixel pro Sekunde bewegen. Und dann sieht die Berechnung so aus, dass du sagst. X := X + 200 * Zeitfaktor. Dein berechneter Zeitfaktor sollte so eigentlich stimmen. Nur die eigentliche Berechnung mit dem Faktor würde ich umstellen.
Der Zeitfaktor sollte sich ja im Bereich von 0 und 1 (1 Sekunde) bewegen. Wenn du jetzt 10 Bilder in der Sekunde schaffst dann hast du einen Faktor von 0.1. 200 * 0.1 wären also 20. Das würde einer Division von 10 entsprechen. Und wenn du jetzt 20 + 20 + 20 usw rechnest kommst du nach 10 mal auf genau 200.
Das musst du jetzt nur für deinen Fall umsetzen. In welchem Bereich und mit welchen Maßen (Pixel, Farbwerte) spielt keine rolle. Das prinzip ist überall das Gleiche.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.