PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Koordinaten Berechnung?



Ares-God of War
13.12.2006, 16:47
Ich würde gerne ein AKS skripten...hatte auch keine probleme BISHER...wie soll ich abfragen ob der Gegner ein Tile for dem Hero steht...also das der Gegner net 4 tiles vom hero weg ist un er doch noch schaden abkriegt...

Kelven
13.12.2006, 18:33
Jedes Event hat eine x/y Variable für seine Position. Die kann bei dem Eventkommando für die Variablen abgefragt werden. Man muß dann letztendlich nur die Werte vom Gegner von denen des Helden abziehen und wenn das sowohl bei dem x-Wert als auch y-Wert in der Spanne von -1 bis 1 ist, steht das Event direkt neben dem Helden. Das ist die simpelste aller Möglichkeiten, denke ich.

bluedragon05
15.12.2006, 17:44
Also sowas in der Art?


<>Change Variable: Var(0001: HeroX) = Hero's X Pos.
<>Change Variable: Var(0003: GegnerX) = Gegner1 X Pos.
<>Change Variable: Var(0005: AbstandX) = Var(0003: GegnerX)
<>Change Variable: Var(0005: AbstandX) - Var(0001: HeroX)
<>IF Var(0005: AbstandX) >= -1
<>
:End Case
<>


Wie kann man das eigentlich die Umgebung des Helden machen, wenn sie nach Möglichkeit kreisförmig sein soll?
Also z.B. wenn man testen möchte, ob der Held in einer gewissen Nähe eines Monsters ist, welches ihn dann sofort attackiert, wenn er dem Monster zu Naha kommt.

Dhan
15.12.2006, 19:06
@blue: joa, hättst im Mathe aufgepasst... Satz des Pythagoras ;)
Der Abstand zweier Events kann berechnet werden durch
sqrt(X²+Y²)
wobei X und Y die Abstände auf den jeweiligen Achsen sind und sqrt Squareroot also Quadratwurzel

Da der Maker keine Wurzel kann, musst du entweder eine Wurzelfunktion selber basteln (du fragst einfach bei jeder Zahl durch, ob sie quadriert unter der eingabe waere, wenn nech, nimmst du die erste, bei ders nech so is)
oder du quadrierst den Wert, den du für den Abstand nehmen wolltest und lässt die Wurzel einfach wech

bluedragon05
15.12.2006, 21:42
Ich hab zwar in Mathe aufgepasst, aber auf die Idee bin ich nicht gekommen.

Wenn man das jetzt für eine kreisähnliche Fläche machen will, muss man dann den Abstand zu jedem der Randfelder berechnen?
Bsp.:
XXXXOOOXXXXXX
XXOOOOOOOXXXX
XOOOOMOOOOXXX
XXOOOOOOOXXXX
XXXXOOOXXXXXX

X= Felder ausserhalb des abzufragenden Bereichs
O= Felder des abzufragenden Bereich
M= Mittelpunkt (Monster)

Dhan
16.12.2006, 17:42
Aaaalso nochma:
http://www.math-worksheets.info/pythagoras%20theorem.jpg
Das ist ein Dreieck. Es hat die besondere Eigenschaft, dass ein Eck darin 90° hat, es also im rechten Winkel steht.
Ist diese Eigenschaft gegeben, gilt: a²+b²=c²
daraus folgt: c = plusminus Wurzel aus a²+b²
Da wir c als positiv annehmen: c = sqrt(a²+b²)

so, was hat das jetzt mit Koordinaten zu tun? Ganz einfach, deine X-Achse ist orthogonal (senkrecht) zur Y-Achse (jedenfalls im üblichen Koordinatensystem)
D.h. der Winkel zwischen ihnen ist ein rechter Winkel
nimm jetzt die Nicht-Rechten-Ecken als die Positionen deines Heldens und des Monsters an, dann erkennst du, dass der Abstand dieser beiden c ist, a und b kann man problemlos als die Abstände von Held und Monster auf den einzelnen Achsen auffassen.
Daher: Abstand = sqrt(AbstandX²+AbstandY²) oder Abstand² = AbstandX²+AbstandY²
In diesem Fall vielleicht ein >= da du ja nicht abfragen willst, ob der Abstand genau der und der ist sondern ob der tatsächliche er kleiner ist als der geforderte
Soll es nicht kreisförmig sondern z.B. Ellipsoid sein, brauchst du natürlich eine andere Formel, nämlich:
http://upload.wikimedia.org/math/9/4/b/94bc0fbfc1ace2e887afbc22be6d3520.png wobei a und b Höhe/Breite der Ellipse sind et cetera

klarer?

Allgemein, wenn man mit Koordinaten in Spielen jongliert, gibt es eigentlich 3 wesentliche Formeln:
1. Pythagoras für Abstände
2. Sinus, Cosinus, Tangens etc für die Umrechnung zwischen Winkeln und Strecken
3. Skalarmultiplikation zweier Vektoren um festzustellen, ob sie orthogonal zueinander stehen (dann ergibt die Skalarmultiplikation 0)
damit kann man schon so gut wie alles machen. Vielleicht noch ein bisserl Physik wenn man mit Abbremsung und Gravitation/Kräften schaffen will, aber alles darüber hinaus is mehr abstraktes Zeuch

Kelven
16.12.2006, 18:35
Und was lernen wir daraus? Einfach rechteckigen Bereich nehmen, reicht für Gegnererfassung völlig aus. =3