Zielsuchend Schiessen



  • so ich habe das problem gelöst
    die die sich dafür interessieren hier mein ansatz

    Erst wird der winkel berechent zwischen Gegner und Spieler.
    Diese dann auf das 2D Bild übergeben. Dadurch zeigt das Bild dann auf den Spieler
    Jetzt ne einfach kleine Abfrage.

    if (Schuss.x > Spieler.x)
    Schuss.x--;
    else if(Schuss.x < Spieler.x)
    Schuss.x++;

    if (Schuss.y > Spieler.y)
    Schuss.y--;
    else if(Schuss.x < Spieler.y)
    Schuss.y++;

    Dabei jedesmal den Winkel zwischen Schuss und Spieler ausrechnen und das Schussbild dabei ausrichten lassen.

    sieht nicht schlecht aus einwenig wie so eine verfolgungsrakete.

    einfach nicht wahr
    so simple kann es auch sein

    thx an alle lösungsansätze
    😃



  • Das rockt nicht.

    B-----
          \
           \
            \
             \
              A
    


  • besonders kann das bild dann in eine andere richtung, als es sich eigentlich bewegt, zeigen..
    Wenn du den Winkel schon ausrechst, dann multiplizier doch einfach deinen ursprünglichen bewegungsvektor (z.b. (0;-5)) mit der entsprechenden drehmatrix (bzw. umgekehrt) ..



  • Man kann das irgendwie mit Atan berechnen, keine Ahnung mehr wie, hab ich ich vergessen...



  • sbrog schrieb:

    Man kann das irgendwie mit Atan berechnen, keine Ahnung mehr wie, hab ich ich vergessen...

    Ja genau:

    double getRotation (double x, double y)
    {
    	return atan2 (y, x) / PI * 180;
    }
    

    Diese Funktion hab ich in meinem letzten Game verwendet. Geb dann an x und y die Differenz zwischen Start- und Zielposition ein und du bekommst als Rückgabe deinen Winkel.



  • / PI * 190 muss nicht sein, von daher ist diese "Funktion" etwas sinnlos und dazu auch noch schlecht benannt.

    Bye, TGGC (Keine Macht den Dummen)


  • Mod

    TGGC schrieb:

    / PI * 190

    autsch



  • Soll man direkt mit bogenmas weiter rechnen ?
    Wie benutzt man das ? 🙂



  • / PI * 190

    hehe der unschlüssige der sich nicht entscheiden kann ob er nun den kreis auf 360 Grad oder 400 Grad normt entscheidet sich für den Mittelwert 😃



  • Mortal2006 schrieb:

    Soll man direkt mit bogenmas weiter rechnen ?
    Wie benutzt man das ? 🙂

    autsch²

    Bye, TGGC (Keine Macht den Dummen)



  • k.



  • Windalf schrieb:

    / PI * 190

    hehe der unschlüssige der sich nicht entscheiden kann ob er nun den kreis auf 360 Grad oder 400 Grad normt entscheidet sich für den Mittelwert 😃

    Der Wert ist ja eben völlig egal, also kann man auch 2Pi lassen, vor allem weil alle Funktionen aus cmath usw. ebendies benutzen.

    Bye, TGGC (Keine Macht den Dummen)



  • Benutzt doch den Satz des Pytagoras:
    a u. b == Katheten.
    c folglich die Hypotenuse.

    c² = a² + b²

    Man muss das natürlich für jede Achse berechnen...

    € Ach ja, das soll ein rechtwinkliges Dreieck sein 🙂



  • roan312 schrieb:

    c² = a² + b²

    € Ach ja, das soll ein rechtwinkliges Dreieck sein 🙂

    Sonst nimmst den allgemeineren Fall

    a^2 + b^2 - 2abcos(gamma) = c^2

    Wobei gamma der von a und b eingeschlossene Winkel ist. Fuer rechte Winkel ist das zufaellig Null und siehe da, da ist der alte Pyty wieder 😃

    Ich kann auch nur Vektoren empfehlen, das ist das einfachste und normalerweise auch das schnellste fuer diesen Fall. Wenn man Vektoren nicht kennt, die sollten eigentlich in jedem guten Einfuehrungsbuch zur Spieleentwicklung erlautert werden oder man geht mal in eine Bibliothek und schaut unter "Lineare Algebra", da gibts ne ganze Menge. Ein Kumpel der an der Uni CG lehrt schwoert auf "Lineare Algebra" von Gilbert Strang.

    so far

    Phil


Anmelden zum Antworten