Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FreePascal Vektoriales Rechnen (https://www.delphipraxis.net/192708-vektoriales-rechnen.html)

Maurooon 12. Mai 2017 13:10

Delphi-Version: 5

Vektoriales Rechnen
 
Hey Leute,

folgendes Problem: ich habe eine KI programmiert (einfach eine Figur) die auf den menschlichen Spieler schießen soll. Auf der "Map" sind aber noch Hindernisse (shapes) die man umgehen muss. Die KI soll jetzt NUR schießen, wenn auf der Luftlinie zu dem menschlichen Spieler KEIN Hinderniss, also kein Shape liegt.
Wie kann ich das abfragen?

LG

Edit: Die Überschrift lautet deshalb Vektorielles Rechnen, da ich vermute oder mir gar sicher bin, dass man es darüber lösen muss.

TiGü 12. Mai 2017 13:18

AW: Vektoriales Rechnen
 
Klingt nach Wegfindung.
Kennst du diese Tutorials?
https://wiki.delphigl.com/index.php/...al_Pathfinding
https://wiki.delphigl.com/index.php/...l_pathfinding2

Maurooon 12. Mai 2017 13:27

AW: Vektoriales Rechnen
 
Hab mir die zwei Artikel mal durchgelesen, bzw. sie überflogen... das sieht ziemlich kompliziert aus, und meine "Map" jetzt noch in solche Quadrate einzuteilen gestaltet sich bei mir schwierig da die Hindernisse unregelmäßig und unterschiedlich groß sind...

Gibt es da keinen anderen Weg für? Z.B. dass ich mir qusi immer eine Linie von KI zu Spieler denke und überprüfe ob diese ein Shape kreuzt? gibt es da irgendwie eine Möglichkeit für?

TiGü 12. Mai 2017 13:46

AW: Vektoriales Rechnen
 
:glaskugel:
Wie genau ist denn das Ganze implementiert?
Das ist jetzt die Stelle, wo Quelltext ganz hilfreich ist.

JasonDX 12. Mai 2017 13:49

AW: Vektoriales Rechnen
 
Pathfinding ist glaube ich nicht der richtige Begriff. Der dient dazu, einen Weg (mit Kurven) von A nach B zu finden.
Um zu erkennen, ob ein Hindernis zwischen zwei Punkten A und B ist, kann man die Strecke von A nach B nehmen und prüfen, ob diese Linie eines der Hindernisse durchquert.
Dies kann man damit berechnen, indem man prüft ob die Strecke AB eine der Grenzlininen eines der Hindernisse durchquert. Bspw. wenn ein Hindernis durch Punkte V-W-X-Y-Z definiert ist, prüft man ob die Strecke AB eine der Strecken VW, WX, XY, YZ, ZV schneidet. Wenn ja, würde das Projektil auf das Hindernis treffen. (Vllt. hat Shapes dafür bereits eine Funktion).
Damit hast du das Problem auf das Berechnen des Schnittpunkts zweier Strecken reduziert, das sollte einfach genug sein.

Maurooon 12. Mai 2017 13:51

AW: Vektoriales Rechnen
 
Ich hab ja noch keinen Quelltext... bzw klar, mein Spiel an sich aber ja noch nichts für die Lösung des Problems. Glaube kaum dass das Spiel hierbei hilft... Diese gedachte Linie von der ich gesprochen habe war ja nur eine Idee...

Neutral General 12. Mai 2017 15:16

AW: Vektoriales Rechnen
 
Raycasting ist wahrscheinlich was du brauchst:

http://www.redblobgames.com/articles/visibility/

Maurooon 12. Mai 2017 16:11

AW: Vektoriales Rechnen
 
Zitat:

Zitat von JasonDX (Beitrag 1371128)
Pathfinding ist glaube ich nicht der richtige Begriff. Der dient dazu, einen Weg (mit Kurven) von A nach B zu finden.
Um zu erkennen, ob ein Hindernis zwischen zwei Punkten A und B ist, kann man die Strecke von A nach B nehmen und prüfen, ob diese Linie eines der Hindernisse durchquert.
Dies kann man damit berechnen, indem man prüft ob die Strecke AB eine der Grenzlininen eines der Hindernisse durchquert. Bspw. wenn ein Hindernis durch Punkte V-W-X-Y-Z definiert ist, prüft man ob die Strecke AB eine der Strecken VW, WX, XY, YZ, ZV schneidet. Wenn ja, würde das Projektil auf das Hindernis treffen. (Vllt. hat Shapes dafür bereits eine Funktion).
Damit hast du das Problem auf das Berechnen des Schnittpunkts zweier Strecken reduziert, das sollte einfach genug sein.

wie frage ich denn ab, ob eine Strecke einer der Grenzlinien eines der Hindernisse durchquert?

TiGü 12. Mai 2017 16:18

AW: Vektoriales Rechnen
 
Zitat:

Zitat von Maurooon (Beitrag 1371149)
wie frage ich denn ab, ob eine Strecke einer der Grenzlinien eines der Hindernisse durchquert?

Kannst du denn die Strecke zwischen dir und dem Gegner bestimmen? Hast du diese Information schon?

Maurooon 12. Mai 2017 16:23

AW: Vektoriales Rechnen
 
hätte jetzt gesagt dass ich irgendwie einen Vektor mache indem ich einfach die beiden Koordinaten voneinander abziehe... aber diese Idee ist noch nicht ganz ausgereift... jemand eine Idee dafür?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 Uhr.
Seite 1 von 3  1 23      

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