Forum: Multimedia
Delphi
by Medium,
6. Jul 2008
Sag uns doch bitte nochmal ganz genau was du vor hast, und wo ganz genau das Problem liegt, und was du evtl. schon probiert hast.
Forum: Multimedia
Delphi
by Medium,
1. Jul 2008
Das ganze ist zwar soweit schon deutlich besser, wenn auch recht wenig auf Performance optimiert, jedoch bleibt der wichtigste Punkt offen:
Was passiert, wenn ein 10*10 Pixel großes Sprite kurz vor einem anderen 5*5 Pixel großem Sprite steht, sich aber mit sagen wir mal 10 Pixel pro Bild darauf zu bewegt? Das Sprite überspringt das andere, und die eigentlich stattfindende Kollision wird nicht...
Forum: Multimedia
Delphi
by Medium,
1. Jul 2008
Entweder bin ich gerade wirklich sehr blind, oder du prüfst hier doch nur, ob der Pixel (ax, ay) im Spielfeld liegt, und wenn ja, ob er in einem anderen Sprite liegt, dass die Kollisionsprüfung an hat, wobei du zudem davon ausgehst, dass ein Sprite immer rechteckig und nicht gedreht ist.
Wenn ich aber nicht die Kollision eines einzelnen Pixels (ax, ay), sondern z.B. eines Kreises prüfen will,...
Forum: Multimedia
Delphi
by Medium,
30. Jun 2008
PtInRect macht folgendes:
Es nimmt einen 2D-Punkt entgegen, und ein Rect. Dann wird die X-Koordinate des Punktes auf größer/kleiner mit der linken/rechten Begrenzung des Rects verglichen, sowie die Y-Koordinate mit der oberen/unteren Grenze. Das ergebnis ist die 4 Vergleiche and-verknüpft.
Das muss man nun für jeden Punkt des zu testenden Objektes machen, und für jeden Punkt den dieses im Laufe...
Forum: Multimedia
Delphi
by Medium,
30. Jun 2008
*schüttel* ("Weil hunderttausende Fliegen..." man kennt den Spruch ;)) Es geht halt auch ohne häßliche Pixelschritt-Schleife.
Genau, deswegen schreibe ich auch erstmal in jedem meiner Programme mindestens 1GiB Schrott in den Speicher, weil die meisten haben ja genug davon.
Was ist aber, wenn der "Ball" in diesem Fall größer als nur einen Pixel ist? Es geht nicht um jedes Pixel im...
Forum: Multimedia
Delphi
by Medium,
30. Jun 2008
Wenn man mit PtInRect arbeitet muss man aber mindestens von einem der möglichen Kollisionspartner wirklich JEDEN Pixel einzeln überprüfen, oder aber eine geschlossene "Sensorlinie" abprüfen. Beides Gefummel und nicht wirklich performant, und wenn das Rect zu schmal ist, bzw. der Ball zu schnell kann er dir dabei immer noch einfach durchfliegen. Das lässt sich dann nur noch mit...
Forum: Multimedia
Delphi
by Medium,
27. Jun 2008
Genau wird dein Ball jedoch in den seltensten Fällen treffen, da er sich wahrscheinlich meist um mehr als nur einen Pixel pro Step bewegt. Die genauste Möglichkeit das in den Griff zu bekommen ist es, wenn du den Flugvektor den Balles nimmst, und die Gerade die er erzeugt mit der Kollisionsgeraden schneidest. Liegt der Schnittpunkt innerhalb des unskalierten Flugvektors, tritt zwischen dem...