First-person-simulation mit three.js mit der Tastatur Pfeile

Für meine Quelle, besuchen http://jsfiddle.net/fYtwf/

Hintergrund

Habe ich eine einfache 3d-simulation mit three.js wo die Kamera ist umgeben in 3 Dimensionen Würfel schneiden. Diese Würfel sind zu helfen, zu visualisieren, wo die Kamera schaut, bis der Blick steuert, kodiert und getestet. Ich möchte zum erstellen einer einfachen 3D-Anwendung, wo die Kamera gesteuert wird über bis, unten, Links und Recht Tasten. Wie verschieben Sie Ihren Kopf

Fragen

In meiner aktuellen Anwendung, wenn nach vorne und aufwärts, sind wir erfolgreich. Aber wenn wir drehen Links 90 Grad, und wir drücken den Pfeil nach oben... Das falsche, was passiert. die Kamera-Schritten die x-Achse, sondern weil wir es mit einer anderen Richtung, indem die x-Achse ALLEIN ist FALSCH...

Nun ich gehe davon aus dies ist, weil einige der Trigonometrie erforderlich ist, berechnen Sie die richtigen Werte für die z-Achse. Aber, meine trig ist nicht Brillant.

Aktuellen

Besser verstehen, was ich meine, bitte besuchen Sie mein jsfiddle : http://jsfiddle.net/fYtwf/

BIS Schlüssel NUR in Schritten X

UNTEN Schlüssel NUR dekrementiert X

LINKS Schlüssel NUR in Schritten Y

RECHT Schlüssel NUR dekrementiert Y

Q Schlüssel NUR in Schritten Z

W Schlüssel NUR dekrementiert Z

( Q und W wurden nur codiert, um zu versuchen und helfen Sie mir zu verstehen. )

Aus meinem aktuellen Verständnis, wenn ich drücken Sie die UP-Taste, X ansteigen muss und die Z-Achse modifiziert werden müssen, basierend auf dem, was die aktuelle Y-Achse ist. Allerdings weiß ich nicht, den Algorithmus 🙁

Also X und Z müssen geändert werden, auf die KEYUP-code ( glaube ich, bitte korrigiert mich wenn ich falsch Liege )

//setRotateX, getRotateX, setRotateY and getRotateY are extended
//camera functions I wrote so I could work with degrees. Solution
//IS NOT required to use them, they just helped me

switch( key )
{
    case KEYUP:
        if ( camera.getRotateX() < 90 ){ //restrict so they cannot look overhead
            camera.setRotateX( camera.getRotateX() + VIEW_INCREMENT );
        }
        break;

    case KEYDOWN:
        if ( camera.getRotateX() > -90 ){ //restrict so they cannot look under feet
            camera.setRotateX( camera.getRotateX() - VIEW_INCREMENT );
        }
        break;

    case KEYLEFT:
        camera.setRotateY( camera.getRotateY() + VIEW_INCREMENT );
        break;

    case KEYRIGHT:
        camera.setRotateY( camera.getRotateY() - VIEW_INCREMENT );
        break;
}
  • So komisch ist das drehen auf der y-Achse Transformationen der z-Achse, nicht aber die x-Achse. Vielleicht ist es ein bug?
Schreibe einen Kommentar