Wie kann ich ein Ziel orten und um eine Rakete ab zufeuern?
Übersicht

![]() |
sbrogBetreff: Wie kann ich ein Ziel orten und um eine Rakete ab zufeuern? |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich will in einem spaceshooter abfragen , welches ziel dem gegner am nächsten ist, um dann eine Lenkrakete auf das ziel abzufeuern.
Leider fällt mir nicht ein wie ich das machen soll. ![]() |
||
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
na , deine Gegner auf die du schießt haben doch sicher X/Y Variablen oda? wenn ja dann frag doch einfach ab welche X Variable am kleinsten ist, und dann feuerste deine Rakete drauf ab . So würd ich das machen .
FREeMaN |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das wird dann ziemlich ungenau. Wenn ein Gegner die selbe x koordinate hat, aber am anderen ende des bildschirms liegt ?
Man sollte das irgendwie mit radius abfragen können. Aber mit sin und cos kenne ich mich leider nicht aus. |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
alle mit der Position mit deiner Position mit pytagoras abfragen
und den kürzesten nehmen! Zitat: Dieses Beispiel zeigt die Berechnung eines Abstands zwischen zwei Punkten (nach Pythagoras-Formel): Abstand=SQR((X1-X2)^2+(Y1-Y2)^2) |
||
[BB2D | BB3D | BB+]
|
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
nimm doch den satz des pythagoras....
Code: [AUSKLAPPEN] Distanz# = Sqr(((Schiff1_X-Schiff2_X)^2)+((Schiff1_Y-Schiff2_Y)^2))
Edit: Ma Rallimen,du bist wie immer schneller ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber nur ein paar millisekunden ![]() das sqr kannste normal auch weglassen.... distanz = ((Schiff1_X-Schiff2_X)^2)+((Schiff1_Y-Schiff2_Y)^2) das reicht schon |
||
[BB2D | BB3D | BB+]
|
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst schon genau nach dem nächsten suchen:
Code: [AUSKLAPPEN] Abstand = 10000000 For m.mine = Each mine ; nächste Mine suchen If Abstand(m\x, m\y, s\x,s\y) < Abstand Then Abstand = Abstand(m\x, m\y, s\x,s\y) zx = m\x zy = m\y EndIf Next Ein Beispiel aus meinem Projekt, in dem eine Mine gesucht werden soll, die dem Spieler am nächsten ist. Es werden alle durchgegangen und am Ende werden die Koordinaten der nächsten Mine in den Variablen zx und zy gespeichert. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wo haste die Funktion Abstand gelassen, die würd ich dann schon auch posten:
Code: [AUSKLAPPEN] Function Abstand(x1,y1,x2,y2) Return (((x1 - x2)^2) + ((y1 - y2)^2)) End Function |
||
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Travis hat Folgendes geschrieben: Du musst schon genau nach dem nächsten suchen:
Code: [AUSKLAPPEN] Abstand = 10000000 For m.mine = Each mine ; nächste Mine suchen If Abstand(m\x, m\y, s\x,s\y) < Abstand Then Abstand = Abstand(m\x, m\y, s\x,s\y) zx = m\x zy = m\y EndIf Next Ein Beispiel aus meinem Projekt, in dem eine Mine gesucht werden soll, die dem Spieler am nächsten ist. Es werden alle durchgegangen und am Ende werden die Koordinaten der nächsten Mine in den Variablen zx und zy gespeichert. danke schon mal euch allen. So wie ich das sehe ist das Code: [AUSKLAPPEN] If Abstand(m\x, m\y, s\x,s\y) < Abstand Then Abstand = Abstand(m\x, m\y, s\x,s\y) einSortierverfahren ? und was hat das "abstand = 1000000" zu bedeuten ? ps. kennt ihr irgendwelche seiten, wo man das lernen kann ? |
||
![]() |
Gossi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: und was hat das "abstand = 1000000" zu bedeuten ? Travis geht alle Minen durch, und jeder Abstabd der kleiner ist als der bisher kleinste, wird als neuer "kleinster abstand" gespeichert. Wäre der Abstand von ANfang an 0, wäre keiner der gefundenen Abstände kleiner als der bisher kleinste (der ja 0 ist!). Daher nimmt man sich irgendeinen sehr großen Startwert, der garantiert von irgendeinem Objekt unterboten werden kann. ps @ travis: Ich mag diesen "größten-startwert"-Trick nicht. In meinen Augen ist es ein unsauberes Verfahren. Ich persönlich nehme immer den ersten Wert bei solchen Sachen. Der erste wert aus der Liste, egal was es für einer ist. Also in diesem Fall der Abstand zur erst-besten Mine. Wird der Wert unterboten: schön. Wenn nicht, ist es schon der kleinste Wert. Dabei tritt also kein Fehler auf. |
||
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind. |
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mich jetzt mal über den Satz des Phytagoras informiert.
Welches sind denn die drei eckpunkte ? |
||
![]() |
Gossi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] A---------B | / | / | / | / |/ C C bist du und B ist dein Gegner. A ergibt sich also automatisch![/code] |
||
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
wobei hier:
Code: [AUSKLAPPEN] C---------A
| / | / | / -->c | / |/ B immer die Seite gegenüber eines Punkte denselben Buchstaben hat, im Beispiel für c eingezeichnet. (da du ja für den Pyth. die Seiten und nicht die Punkte brauchst). |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group