Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Ist der Spieler im Sichtbereich? (https://www.delphipraxis.net/159121-ist-der-spieler-im-sichtbereich.html)

Angel4585 15. Mär 2011 14:07

Ist der Spieler im Sichtbereich?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich programmiere ein Spiel und stehe vor folgendem Problem:

Ein Spieler hat eine gewisse Blickrichtung und einen Sichtbereich.
Nun muss ich irgendwie rausfinden, ob ein anderer Spieler im Sichtbereich ist, ich hab im Anhang hier mal eine kleine Grafik die das verdeutlichen soll.
bekannt sind die x/y-Position der Spieler, die Blickrichtung in grad/rad und der Winkel des Sichtbereiches.

Hat jemand ne Ahnung wie das geht? Also was ich da rechnen muss?

:angel:

Medium 15. Mär 2011 14:50

AW: Ist der Spieler im Sichtbereich?
 
Mir fallen spontan zwei Wege ein:

1) Berechne den Winkel der beiden äussersten Sichtgrenzen (hast du ja schon per definition) zu einer Achse. Liegt der Winkel der Geraden vom Spieler zum anderen Spieler zwischen diesen Werten, ist er im Sichtfeld. Fallstrick: 0-Durchgang des zyklischen Winkelmaßes, muss als Sondefall bedacht werden.

2) Wäre vektoriell, und wenn deine Ausgangslage rein trigonometrisch vorliegt, ist die Konstruktion vermutlich unnötig aufwendig. Grundsätzlich hab ich bei Trigonometrie immer Bauchweh, und würde jederzeit rein verktorielle Ansätze bevorzugen, aber wenn alles andere schon so besteht... muh ;)

Angel4585 15. Mär 2011 15:17

AW: Ist der Spieler im Sichtbereich?
 
ähä

du meinst ich soll den Winkel der oberen und den Winkel der unteren Sichgrenze berechnen und dann schauen ob die Linie zum Spieler dazwischen liegt, das ist schonmal möglich.
Die Entfernung sollte dann kein Problem mehr sein, ja so könnte ich das machen, danke :)

Gibt es noch einfachere Möglichkeiten?

DeddyH 15. Mär 2011 15:40

AW: Ist der Spieler im Sichtbereich?
 
Die Entfernung müsste sich über die Hypotenuse eines rechtwinkligen Dreiecks, gebildet aus den Koordinaten der beiden Spieler, berechnen lassen.

Medium 15. Mär 2011 17:16

AW: Ist der Spieler im Sichtbereich?
 
Zitat:

Zitat von Angel4585 (Beitrag 1088678)
Gibt es noch einfachere Möglichkeiten?

Klar, du könntest dem Spieler so eine Grafik wie in deinem Posting anzeigen, und selbst entscheiden lassen! Dann sinds nur zwei Buttons "Ich seh dich" und "Ich seh dich nicht" :P

Nein im Ernst: Das ist doch schon super simpel. Du kennst doch schon deine Blickrichtung sowie FOV (Field of View). Die Winkel der Sichtfeldgrenzen sind dann einfach Richtung-(FOV/2) und Richtung+(FOV/2), ggf. muss man Winkel <0 und >2*pi noch fixen. Der Winkel vom Spieler zum anderen: Hier, wobei bei dir ein Vektor "Spieler->anderer Spieler" ist, und der andere einfach deine Referenzachse, zu der du deine anderen Winkelangaben auch hast.

alfold 15. Mär 2011 18:26

AW: Ist der Spieler im Sichtbereich?
 
Ich schliesse mich @Medium an.
Du hast die FOV daten des Spielers, und du hast die xy daten des Gegenspieler. Nun must Du nur fragen, ob Gegenspieler innerhalb von FOV ist.
Wenn ja, dann melde es dem Spieler 'Gegner' gefunden zb.

alfold


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