Egoshooter Perspektive programmieren mit OpenGL



  • Du verstehst also nicht wie man einen Punkt auf einem Kreis findet aber moechtest einen Ego-Shooter programmieren?...



  • Die Fortbewegung sollte mit einer Dreiecks-Welle und nicht mit einer Sinus-Welle erfolgen, oder irre ich mich da?



  • Germanys Next MMO Progger



  • this->that schrieb:

    Germanys Next MMO Progger

    MMORPG tönt realistischer :p



  • EOutOfResources schrieb:

    Die Fortbewegung sollte mit einer Dreiecks-Welle und nicht mit einer Sinus-Welle erfolgen, oder irre ich mich da?

    Daher auch der Ausdruck "Du drehst Dich im Dreieck" ? 🙂



  • hellihjb schrieb:

    Daher auch der Ausdruck "Du drehst Dich im Dreieck" ? 🙂

    Ich meinte die Fortbewegung:

    W drücken:
    
        Dreieck Cosinus
    0°   1       1
    45°  0.5     0.707
    90°  0       0
    

    Wenn man 'W' drückt und um 45° gedreht ist, geht 50% der Geschwindigkeit in die Z-Achse und auch 50% in die X-Achse. Und nicht je 70.7%.

    EDIT: Oder hab ich gerade 'nen Aussetzer?



  • EOutOfResources schrieb:

    [/code]Wenn man 'W' drückt und um 45° gedreht ist, geht 50% der Geschwindigkeit in die Z-Achse und auch 50% in die X-Achse. Und nicht je 70.7%.

    EDIT: Oder hab ich gerade 'nen Aussetzer?

    Denk Dir mal ein Quadrat mit den Seitenlängen 0.707.

    Wie lang ist die Diagonale? (Satz des Pythagoras!)

    Also muß man 0.707 Geschwindigkeit in X-Richtung und 0.707 Geschwindigkeit in Y-Richtung machen, um in Schräg-Richtung 1 Geschwindigkeit zu machen.



  • Ja, stimmt. Sorry.



  • Oke, ich habs jetzt gecheckt.
    Mein gehirn hat heute mal nicht ausgesetzt.

    Nur zur Info :

    Ich hab die Variable "heading" in dem Code nicht gecheckt.
    Jetzt ist eig alles klar.

    "heading" = Angle.

    Bei mir siehts also wie folgt aus :

    GLfloat fAngle.

    Bei Taste "A" :

    fAngle += 0.5f;
    

    Bei Taste "D" :

    fAngle -= 0.5f;
    

    Bei Taste "W" :

    fTransX -= (float)sin(fAngle*piover180) * 0.05f; 
    fTransZ -= (float)cos(fAngle*piover180) * 0.05f;
    
    //fAngle*piover180 = Gradzahl in Radiant
    

    Bei Taste "S" :

    fTransX += (float)sin(fAngle*piover180) * 0.05f; 
    fTransZ += (float)cos(fAngle*piover180) * 0.05f;
    
    //fAngle*piover180 = Gradzahl in Radiant
    

    Der Code in der ScenenFunktion :

    glRotatef( -fAngle, 0.0f, 1.0f, 0.0f );
    glTranslatef( -fTransX, fTransY, -fTransZ );
    

    Und alles passt. Den realistikquatsch von wegen, SinusWave, damit es wie menschenLauf aussieht brauch ich nicht.

    Vielen Vielen Dank, für die Hilfe, die Ihr mir gerade geboten habt. Und die Zeit über. Zumindest weiß ich jetzt, dass Trigonometrie entscheidend wichtig ist.

    Mfg

    jookerxxx (went lucky today)



  • Du solltest nicht bei Nehe lernen. Der Code ist hoffnungslos veraltet. glBegin und glEnd ist wirklich mittlerweile ein nogo. Verwende wenigstens Vertex Arrays.



  • Scorcher24 schrieb:

    Du solltest nicht bei Nehe lernen. Der Code ist hoffnungslos veraltet. glBegin und glEnd ist wirklich mittlerweile ein nogo. Verwende wenigstens Vertex Arrays.

    http://www.youtube.com/watch?v=_TwLN55OzO0


Anmelden zum Antworten