![]() |
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 ? |
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 ;)
|
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: . |
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: |
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.
|
Re: kollision
Zitat:
![]() |
Re: kollision
mh ok, jedoch ist dieses verfahren sehr prozessor lasitg, dachte man könnte es auch anders lösen
|
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. |
Re: kollision
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 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