Schiff automatisch Drehen wo der Gegner ist..
Übersicht

Bobo2040Betreff: Schiff automatisch Drehen wo der Gegner ist.. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi
Ich stehe grade irgendwie auf dem Schlauch ... ich möchte, dass sich mein Schiff automatisch zu dem Gegner dreht wenn man ihn Angeklickt hat und auf Ihn feuert... Nur bekomme ich das Irgendwie nicht so wirklich hin... Hier ist mal mein bisheriger Code ... wäre nett wenn mir jemand einen Lösungsansatz erklären könnte ... BlitzBasic: [AUSKLAPPEN]
Mfg |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Atan2 um den Winkel zum Gegner raus zu finden, und dann je nach Winkel das passende Bild zeichnen.
Hast du immer noch nur die 8-Wege-Bilder ohne Array? Das solltest du besser ändern. Kannst du Arrays schon? Was du brauchst ist sowas: BlitzBasic: [AUSKLAPPEN] ;Initialisierung Dabei ist richtung die Richtung in die der Spieler schaut in Grad. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vllt hilft dir:
BlitzBasic: [AUSKLAPPEN] ATan2(yabstand,xabstand) x- und yabstand ist einfach Aiposition - Spielerposition Das gibt dir einen Winkel von -180 bis 180 zurück. Dann musst du den Winkel nur noch auswerten, z.B. so: BlitzBasic: [AUSKLAPPEN] If winkel > -180 Then seite = 1 |
||
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm okay ![]() Ich versuche es nachher mal ... wusste nicht das es eine funktion wie Rotateimage() gibt -_- ich habe alle Bilder mühevoll ausgeschnitten und die eingetragen ... ![]() Mfg |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Noch eine kleine Anmerkung: Was bringt diese Abfrage? BlitzBasic: [AUSKLAPPEN] If AiX-KameraX>AiX-160-KameraX And AiX-KameraX<AiX-480-KameraX Then AiX-KameraX ist immer größer als AiX-160-KameraX, AiX-KameraX ist allerdings auch immer größer als AiX-480-KameraX, womit schon die erste Abfrage immer false ist (da du überprüfst, ob AiX-KameraX kleiner ist als AiX-480-KameraX), analog hierzu natürlich auch die 2. Abfrage... |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok
Das mit dem Winkelberechnen hat geklappt ![]() Nur wenn der Gegner irgendwo neu Gespawnt wird dann bringen mir die Alten Winkel nichts mehr.... Ich habe es bis jetzt so das es fuer den ersten Gegner geht aber wenn er Tod ist wird er irgendwo zufaellig Gegrespawnt und dann muesste ich das nochmal neu alles machen... Kann ich das nicht automatisieren... ? Bin als am Ueberlegen nur faellt mir nicht ein wie ich das mmchen koennte das es egal ist ob AiX 100 ist oder ob AiX1000 ist ... |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klar kannst du es automatisieren. Musst es einfach automatisch neuberechnen lassen. Was hindert dich daran? | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nunja ![]() Icb weis nicht wie stark sich der winkel verandert... Ich probiers morgen mal ![]() Werdet noch was von mir hoeren ^^ |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Na verwend, doch einfach Atan2 wie zuvor, um den Winkel komplett neu bestimmen zu lassen. Keine Angst Befehl beißt nicht. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nunja das mache ich doch...
Nur ist iwie die map voll mit winkeln und nicht der ai Also in der mitte der map ist der winkel 0 EDIT: Hier ist bis jetzt mal die Funktion ... BlitzBasic: [AUSKLAPPEN]
wobei ich mir nicht sicher bin ob ich den winkel so richtig ausgerechnet habe... also ob ich da noch cosinus oder sowas brauche ![]() |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, hast du nicht richtig verwendet. Hättest du die Hilfedatei zu Atan2 auch nur überflogen, dann hättest du ganz am Anfang das hier entdeckt:
Code: [AUSKLAPPEN] Aufruf
Winkel# = ATan2(Y#, X#) Parameter Y# vertikaler Abstand (Gegenkathete) X# horizontaler Abstand (Ankathete) Mal zu beginn, weißt du was ein Winkel ist? Wenn nicht, bitte lies dir den Wiki-Artikel dazu durch. Sowas wie einen X-Winkel oder Y-Winkel gibt es in 2D nicht! Dort hast du nur den Winkel, wenn du von oben draufschaust. Der gibt an, wie weit das Ding gedreht wird, agiert also sowohl auf X als auch auf Y. Also, wie kriegt man den X- und Y-Abstand zwischen zwei Punkten raus? Das geht so: BlitzBasic: [AUSKLAPPEN] XAbstand = XSchiff-XGegner Der Winkel errechnet sich also so: BlitzBasic: [AUSKLAPPEN] Winkel# = ATan2(YSchiff#-YGegner#,XSchiff#-XGegner) Wenn du solche Probleme hast, dann würde ich dir dringend empfehlen (a) Hilfedateien zu lesen und (b) die Grundlagen der Mathematik halbwegs zu lernen, bevor du beginnst, ein MMO zu schreiben. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aaahhhh
Ich weiss was ein Winkel ist ^^ Nur mag ich vorffertige Mathematische Funktionen nicht also schon aber nur wenn ich weis was Passiert... Naja ich probiers wenn ich nach hazse komme ^^ Edut: Du bist ein GENIE!!!! Danke es geht !!! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group