Roboteranimation

(Eduard Rempel)

Damit unser Spiel - mit Ausnahme der Feuer - nicht so steif wirkt, haben wir uns entschieden Animationen einzubauen. Eine Inspiration für mögliche Animationen ist uns beim überdenken der Räume im AVZ eingefallen. Daraus entstand die Idee einen Roboter aus der Robotikabteilung zu animieren und als Teil der interagierbaren Spielumgebung zu benutzen.

Das Animieren geschieht mithilfe der Funktion moveObject:

function moveObject(object, xStart , yStart, zStart, xOffset, yOffset, zOffset, speed, timeDif);

Der erste Parameter ist das Mesh eines Objektes, das bewegt werden soll. Danach folgen die x-, y- und z-Startkoordinaten der Objektes. Diese werden einmalig beim laden des Levels gesetzt. Anschließend sind die Koordinaten des Richtungsvektors, auf dem sich das Objekt bewegen soll. Zum Schluss kommen die Angaben für die Geschwindigkeit und der verstrichenen Zeit seit dem letzten Aufruf der Funktion.

Die verstrichene Zeit wird mithilfe der gegebenen Funktionalitäten von THREE.js ermittelt.

var clock = new THREE.Clock();
clock.getDelta();

Diese Zeitdifferenz wird mit der Geschwindigkeit und dem Richtungsvektor verrechnet, um die Verschiebung des Objektes in jedem Frame zu bestimmen. Anschließend wird das zu bewegende Objekt mit den errechneten Werten translatiert. Dies alles geschieht mithilfe von THREE.js Vektorfunktionen, die eine einfache und intuitive Vektorrechnung möglich machen.

Es wird außerdem immer überprüft ob das Objekt sich in der Umgebung des Ziels befindet, um umzudrehen und sich wieder zum Startpunkt zu bewegen.

Aus Sicherheitsgründen wir keine Verschiebung berechnet, wenn die Zeitdifferenz zum letzten Aufruf zu groß ist. Es kommt sonst zu ähnlichen Fehlern, wie bei der Spielerkollision und das Objekt könnte sich über den Zielpunkt hinaus bewegt und nicht mehr zum Stillstand kommt. So wäre es möglich, dass das Objekt komplett aus der Szene verschwindet.

Außerdem existiert eine spezielle Interaktion mit einem Computer, um die Bewegung des Roboters an- und auszuschalten. So ist es möglich an ihm vorbei zu kommen und im Spiel voranzuschreiten.

Mithilfe dieser Funktion ist es möglich mit kleinen Änderungen beliebige Objekt auf einer geraden Strecke zu bewegen. Leider war keine Zeit mehr vorhanden, um komplexere Bewegungsmuster zu erstellen, da sich diese als weit aus aufwendiger gestaltet haben.

results matching ""

    No results matching ""