PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Code zum Positionsabfrage



Cx MR WOLF
05.10.2012, 00:25
Ja, liebe Community ich habe mal eine klitzekleine Frage nämlich;

Ich will sowas wie ein KS machen unswar, der Held hat halt so'nen Schwert und wenn man Enter drückt dann
schwingt er auch schön, aber er trifft nur dann wenn der Gegner genau vor ihm steht, wie kriege ich das hin, dass der Held den
Gegner mit dem Schwert trift wenn er 1 Block weter rechts ist? Den sein Schwert ist nicht kurz. Ich habe schon die X und Y Werte
der beiden Events in Variablen nur weiß ich nicht wie ich jetzt voran gehen muss :(

MrSerji
05.10.2012, 00:35
- Koordinaten vom Helden speichern.
- Jenachdem wohin er guckt +16 oder -16
- Jo, das wars eigentlich auch schon xD Danach kommt das normale KS zum Einsatz ;)

Cx MR WOLF
05.10.2012, 00:41
Und woher soll der Maker wissen, ob der Gegner 1 Block weiter vor ihn steht?
Der Gegner muss ja auch irgendwie getroffen werden ...
Trotzdem danke, dass du um diese Zeit noch antwortest^^

MrSerji
05.10.2012, 02:54
Ich weiß ja nicht wie dein KS aufgebaut ist, von daher kann ich dir da nicht 100%tig helfen.
Theoretisch müssten die Gegner alle auf ein und die selbe Y und X Koordinate "abspeichern" und dann mit der von dem Helden manimpulierten verglichen werden. So machs ich zumindestens bei Nahkampfwaffen^^

Hat bei mir noch keine Probleme gemacht^^

Kyuu
05.10.2012, 12:43
Aus dem Kopf heraus:

Angenommen die maximale Entfernung, innerhalb der ein Gegner getroffen werden kann ist MaxDistanz, dann ist der Gegner getroffen wenn:

(HeldX - GegnerX) * (HeldY - GegnerY) <= MaxDistanz * MaxDistanz und (HeldX - GegnerX) * (HeldY - GegnerY) >= -(MaxDistanz * MaxDistanz)

Die redundanten Operationen kannst du zwischenspeichern.

Cx MR WOLF
05.10.2012, 13:33
Hey, das hat mich sehr geholfen, vielen vielen Dank! :D

Kyuu
05.10.2012, 16:10
Sorry, hab da einen Denkfehler. Die folgende Formel ist eigentlich das, was ich posten wollte:

dX = abs(HeldX - GegnerX)
dY = abs(HeldY - GegnerY)

Gegner ist getroffen, wenn:

dX * dX + dY * dY <= MaxDistanz * MaxDistanz

Cx MR WOLF
05.10.2012, 16:12
Also bei mir funktioniert es auch so genau so wie ich es haben wollte, trotzdem danke :D