![]() |
Kollisionsabfrage TImage
Hay, wir programmieren grade in Informatik ein Art Frogger. Das ist alles total einfach bis auf die Kollisionsabfrage. :)
Also die zwei Objekte die Kollidieren sollen sind ImMensch (=TImage) und ImAuto (= TImage) Das Auto bewegt sich und wenn der Mensch das Auto berührt soll mit Hilfe von showmessage "Oh Nein!" geschrieben werden. Hier mein Ansatz: [...] VK_Down : begin if (ImMensch.top + ImMensch.Left) = (ImAuto.top + ImAuto.Left) then showmessage('Oh Nein!'); else ImMensch.Top := ImMensch.Top + 5; [...] Was ist an dem Ansatz falsch bzw. wie kann man die Kollisionsabfrage besser machen? Danke im Vorraus :) |
AW: Kollisionsabfrage TImage
Du musst auch die Größe der Images betrachten! Hier mal zwei kleiner Beispielbild:
Code:
Da reicht es nicht nur die Left-Koordinate abzufragen. Meine erste Idee wäre zu testen, ob sich irgendeine Seite mit einer anderen Seite schneidet. Das wären dann :gruebel: 4 * 4 = 16 Tests. ABER das kann ja auch sein, dass ein kleineres Object direkt in einem anderen Object enthalten ist. Somit musst du quasi auch noch testen, ob ein Punkt innerhalb des größeren Vierecks liegt.
+-----+ +----+
| | | | | +--------+ +-----------------+ +---| | | | | | | | | | | | | | +-----------------+ | | | | | | +----+ | | +--------+ |
AW: Kollisionsabfrage TImage
Hi,
das Problem wird sein, dass du in 5er-Schritten springst und daher den genauen Trefferpunkt, den du abfragen willst, überspringst. Sagen wir, die Kollision wäre bei 14, dein Mensch steht jetzt bei 11 --> keine Kollision --> +5 = 16 --> keine Kollision... Daher müsstest du (für das konrete Beispiel) auf > 14 statt auf = 14 testen. LG, Frederic P.S. Willkommen in der DP! Kleiner Tipp: Mit Hilfe von [delphi][/delphi] kannst du den Code hier schöner darstellen lassen. |
AW: Kollisionsabfrage TImage
Windows besitzt eine Funktion namens
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz