![]() |
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: |
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 ;) |
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? |
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.
|
AW: Ist der Spieler im Sichtbereich?
Zitat:
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: ![]() |
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 11:23 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