Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Canvas Color-Collision (https://www.delphipraxis.net/174309-canvas-color-collision.html)

raysto 16. Apr 2013 19:02

Canvas Color-Collision
 
Hallo,
ich habe grade ein neues Projekt erstellt und habe mir ein Image erstellt (Player) und wollte direkt mal eine Kollision ausprobieren die ich woanders schonmal genauso gesehen habe:
Delphi-Quellcode:
  if (Player.Canvas.Pixels[Player.Left,Player.Top] = clblack) then
  begin
    showmessage('Bla');
  end;
Diese Abfrage ist in einem Timer und nebenbei lasse ich den Player immer 2 Pixel runterbewegen. Wenn mein Bild dann in ein riesiges schwarzes Feld kommt, passiert einfach nichts... :| Kann mir da jemand sagen warum?

DeddyH 16. Apr 2013 19:08

AW: Canvas Color-Collision
 
Du fragst ab, ob die Zeichenfläche des Players an seinen eigenen Koordinaten weiß ist. Solange Du seine Farbe nicht während der Bewegung änderst, dürfte diese Bedingung niemals zutreffen.

raysto 16. Apr 2013 19:11

AW: Canvas Color-Collision
 
Meinte in der Bedinung eigentlich clblack :roll: sorry :D Aber ich weiß nicht ganz was du meinst...

DeddyH 16. Apr 2013 19:18

AW: Canvas Color-Collision
 
Ich meine, Du greifst auf den falschen Canvas zu, für Deine Logik müsste man ja den der Komponente, auf der der Player bewegt wird, abfragen. Evtl. wäre es ohnehin besser, keine Pixel mit einer Farbe zu vergleichen, sondern sich Rechtecke oder andere Formen zu merken und auf Überschneidung zu prüfen (z.B. mit IntersectRect).

raysto 16. Apr 2013 19:22

AW: Canvas Color-Collision
 
Oh ja, hab jetzt meinen Fehler entdeckt :) Und ja, wahrscheinlich werde ich die Kollision eh nochmal komplett umbauen, aber danke für die Hilfe :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz