KI Gegnerschuss

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

FreizeitCoder

Betreff: KI Gegnerschuss

BeitragMo, Mai 15, 2006 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

es geht mal wieder um meinen Spaceshooter. (scrollt von oben nach unten)

Ich sitze gerade auf der Leitung......wie stelle ich es am besten an, das der schuss eines Gegners einen bekannten Punkt geradlinig ansteuert, und über diesen hinaus aus dem Bild fliegt (falls er den spieler nicht trifft).

Ich würde das schon irgendwie hin bekommen, aber meine lösungen sind furchtbar umständlich! Ich würde ein ganzes programm dafür brauchen!

Da gibt es doch bestimmt eine bessere Lösung......die vielleicht auch meine FPS etwas schont Wink

stfighter01

BeitragDi, Mai 16, 2006 8:29
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist zum glück nicht schwer.

zuerst musst du den abstand in x und y richtung rausfinden.

also:
dx = pos_spieler_x - pos_gegner_x
dy = pos_spieler_y - pos_gegner_y

damit hast du schon mal die richtung.
je nach dem ob du vom gegner zum spieler od. vom spieler zum gegner schiessen willst musst du halt spieler u. gegner in der rechnung vertauschen.

den richtungsvector musst du jetzt auf eine länge von 1 bringen, damit du ihn mit einer geschwindigkeit multiplizieren kannst.

also:

vl = sqrt( dx * dx + dy * dy )
nx = dx / vl
ny = dy / vl

damit hast du einen auf die länge 1 normierten richtungsvektor.

und mit :

gx = nx * geschwindigkeit
gy = ny * geschwindigkeit


hast du die werte die du zur position des schusses bei jeder aktualisierung dazuzählen musst.


zusammenfassung:


dx = pos_spieler_x - pos_gegner_x
dy = pos_spieler_y - pos_gegner_y
vl = sqrt( dx * dx + dy * dy )
nx = dx / vl
ny = dy / vl

gx = nx * geschwindigkeit
gy = ny * geschwindigkeit

repeat
schuss_pos_x = schuss_pos_x + gx
schuss_pos_y = schuss_pos_y + gy
forever
Denken hilft!

Kryan

BeitragDi, Mai 16, 2006 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
vl = sqrt( dx * dx + dy * dy )

heißt es nicht

vl = sqr( dx * dx + dy * dy )

?? weil ne funktion namens sqrt gibt es nicht
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Christoph

BeitragDi, Mai 16, 2006 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hat er die Funktion selbst gemacht. Very Happy Very Happy
Sonst muss es schon so heißen.
Er will da ja ne Wurzel.

Kryan

BeitragDi, Mai 16, 2006 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
bestimmt so ne funktion:

Code: [AUSKLAPPEN]
Function Sqrt(n)
 Return Sqr(n)
End Function


Immerhin eine "eigene" Funktion Laughing
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

stfighter01

BeitragDi, Mai 16, 2006 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
LOL ja ihr habt recht
sqrt(squareroot) heisst es in c++

aber kryan hat ja die perfekte lösung dafür gefunden Wink
Denken hilft!

Christoph

BeitragDo, Mai 18, 2006 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber die langsamere. Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group