Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   kollision (https://www.delphipraxis.net/49390-kollision.html)

Snoop007 10. Jul 2005 18:06


kollision
 
Hi,
obwohl ich hier die suche und google bemüht habe finde ich nichts zu meinem problem
angenommen die spielfigut befindet sich in einem 2d game und kann mit mehreren objekten kollidieren
ist meine momentane idee die kollisionen im abzufragen indem alle objekte in einem array vorliegen und nachgeguckt wird ob die position von der spielfigur ähnlich dem des objektes ( gegner .. ) ist

jedoch finde ich diese art bissel doof, wie könnte man dieses kollisionsproblem anders lösen als alle objekte auf dem spielfeld abzufragen ?

malo 10. Jul 2005 18:19

Re: kollision
 
Du könntest imho ein "Begrenzungsobjet" o.Ä. einführen (ein Bevel würde schon reichen). Da könntest du dann per Schleife (Stichwort FindComponent) abfragen, ob dein bewegendes Objekt "auf" dem Begrenzungsobjekt liegt. Als Begrenzung kannst du natürlich alles mögliche nehmen. Eventuell sollte aber ein leeres Image o.Ä. gut dafür sein ;)

Khabarakh 10. Jul 2005 18:47

Re: kollision
 
Was für eine Art von Kollision soll es denn werden? Bounding Box oder einzelne Pixel?

@malo: Ich hoffe doch, das wird kein Bewegende-Images-Spiel :wink: .

Snoop007 10. Jul 2005 18:52

Re: kollision
 
Hi,
Bounding Box reicht
@malo deine idee ist gut jedoch weiss ich bzw. der rechner ja nicht welches objekt gerade in der nähe der "spielfigur" ist deshalb müsstn alle objekte die auf dem feld vorhanden sind abgefragt werden ob ein "Hit" vorliegt

kann auch sein das ich irgendwie blöd denke :wall: .. deswegen richte ich mich ja hilfesuchend an euch :mrgreen:

Khabarakh 10. Jul 2005 18:59

Re: kollision
 
Ich würde es auch so machen, wie du es im ersten Post beschrieben hast, also bei Bewegung durch eine TObjectList mit den anderen Objekten iterieren und die Boundings z.B. per IntersectRect auf Überschneidung prüfen.

sniper_w 10. Jul 2005 19:40

Re: kollision
 
Zitat:

also bei Bewegung durch eine TObjectList mit den anderen Objekten iterieren und die Boundings z.B. per IntersectRect auf Überschneidung prüfen.
Richtig. Ich mache genau so was Ähnliches hier.

Snoop007 10. Jul 2005 20:06

Re: kollision
 
mh ok, jedoch ist dieses verfahren sehr prozessor lasitg, dachte man könnte es auch anders lösen

BlackJack 10. Jul 2005 20:18

Re: kollision
 
als kleiner tipp: ich würde das objekt, was die spielfigur o.Ä. dann schliesslich getroffen hat, per Move() an den anfang der ObjectList setzen, da es relativ wahrscheinlich ist, dass dieses objekt bei der nächsten iteration wieder trifft und es dadurch beim durchlaufen der Liste schneller gefunden wird.

p.s.: das geht natürlich nur, wenn die reihenfolge der objekte in der Liste keine rolle spielt.

sniper_w 10. Jul 2005 21:16

Re: kollision
 
Zitat:

Zitat von Snoop007
mh ok, jedoch ist dieses verfahren sehr prozessor lasitg, dachte man könnte es auch anders lösen

Nicht immer. Es hängt davon ab, wie viele Objekten du gerade hast, welche "Typ" von ColisionDetection du implementierst etc...Eigentlich ist das Zeichnen processor lästig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 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