Bewegung

Der Spieler soll sich im Gebäude frei bewegen können. Dies wird dadurch erreicht, dass eine Bewegung des Spielers nach vorne, hinten, rechts und links möglich ist und dieser sich auch mit Hilfe der Maus umschauen kann. Hierbei sind alle Bewegungen abhängig von der Größe des Spielers, damit alle Werte sehr leicht an die Größe der Spielwelt angepasst werden können.

Bewegung durch WASD

Wenn der Spieler eine der Tasten W(vorwärts), A(links), S(rückwärts) oder D(rechts) drückt, wird ein der gewünschten Bewegungsrichtung entsprechender boolean auf true gesetzt.

    if (moveForward) velocity.z -= MOVEMENT_SPEED * speed_factor * delta;
    if (moveBackward) velocity.z += MOVEMENT_SPEED * speed_factor * delta;
    if (moveLeft) velocity.x -= MOVEMENT_SPEED * speed_factor * delta;
    if (moveRight) velocity.x += MOVEMENT_SPEED * speed_factor * delta;

In der Hauptschleife des Programms wird nun die Geschwindigkeit des Spielers je nach Taste in unterschiedlichen Richtungen gesetzt. Dabei können sich auch verschiedene Bewegungen überlagern.

Drehen mithilfe der Maus

Das sich der Spieler mithilfe der Maus umschauen kann, wird mithilfe eines PointerLocks gelöst.

var onMouseMove = function (event) {

        if (scope.enabled === false) return;

        var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
        var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;

        yawObject.rotation.y -= movementX * 0.002;
        pitchObject.rotation.x -= movementY * 0.002;

        pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x));

    };

Dazu wird bei jeder Mausbewegung geschaut, ob der PointerLock aktiviert ist. Wenn das nicht der Fall ist, passiert nichts. Andernfalls wird die Bewegung der Maus browserabhängig abgefragt und gespeichert. Mit diesen Werten wird die Kameraposition neu gesetzt.

results matching ""

    No results matching ""