KI Gegnerschuss
Übersicht

FreizeitCoderBetreff: KI Gegnerschuss |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
stfighter01 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht hat er die Funktion selbst gemacht. ![]() ![]() Sonst muss es schon so heißen. Er will da ja ne Wurzel. |
||
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
bestimmt so ne funktion:
Code: [AUSKLAPPEN] Function Sqrt(n)
Return Sqr(n) End Function Immerhin eine "eigene" Funktion ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
stfighter01 |
![]() Antworten mit Zitat ![]() |
---|---|---|
LOL ja ihr habt recht
sqrt(squareroot) heisst es in c++ aber kryan hat ja die perfekte lösung dafür gefunden ![]() |
||
Denken hilft! |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber die langsamere. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group