2016-03-30 14 views
1

Ich bin auf der Suche nach einer einfachen Codezeile oder einer API, wenn es so einfach ist.Spieler in Richtung der Maus bewegen?

Ich benutze BabylonJS, um ein Online-Spiel zu machen, und ich bin auf ein Problem gestoßen. Ich kann nichts in der Dokumentation finden, um mein Problem zu unterstützen. Ich verwende

Um die Maus zu sperren, wenn Sie normalerweise klicken und ziehen müssen. Ich benutze auch diese Bewegung Skript für Grundbewegung:

function KEY_DOWN(event) 
{ 
    if (event.keyCode == 87) 
    { 
     player.position.z -= 0.5; 
    } 
    else if (event.keyCode == 65) 
    { 
     player.position.x += 0.5; 
    } 
    else if (event.keyCode == 83) 
    { 
     player.position.z += 0.5; 
    } 
    else if (event.keyCode == 68) 
    { 
     player.position.x -= 0.5; 
    } 
} 

Diese nur Transformationen auf eine leider Achse. Gibt es eine Möglichkeit zu bestimmen, wohin meine Maus schaut und sich zu diesem Punkt bewegt, und sich nicht nur auf einer festen Achse bewegt? Ich kann anscheinend nichts finden, das die genauen Methoden hat, die ich brauche. Vielen Dank!

Antwort

1

Ich kenne keine API, aber es sollte nicht so schlimm sein, wenn ich Ihr Problem richtig verstehe. Sie müssen sich in das mousemove-Ereignis einklinken, nachdem der Punkt gesperrt wurde, und anstelle der einfachen Handhabung wie hier gezeigt: http://www.html5rocks.com/en/tutorials/pointerlock/intro/ müssen Sie Ihre Vektorberechnungen für jeden möglichen Bewegungsvektor mit den Schlüsseln in diesem Handler durchführen. Effektiv würden Sie die x, y, z-Deltas berechnen, die jeder Tastendruck in Ihrem pointerlockchange-Handler basierend auf den Mausdeltas entspricht. Wahrscheinlich nicht so schlimm wie es klingt, da Ihre Mausdeltas nur bis zu 2 Achsen gleichzeitig betreffen.

+0

Ich werde das überprüfen, ich werde Sie wissen lassen, ob es funktioniert –

+0

Um weiter zu illustrieren, was ich meine, habe ich hier ein Beispiel zusammengestellt, das meiner Meinung nach helfen wird. Leider konnte ich jsfiddle nicht benutzen, weil seine iframes Blockzeiger blockieren. Mein Beispiel ist hier, es übersetzt Zeiger gesperrt x/y Mausbewegung in normalisierte Vektoren, die den Pfeiltasten zugeordnet werden könnten. Je nachdem, was dein Szenario ist, musst du Dinge umdrehen, die Drehachsen ändern usw. http://www.digitaldownpour.com/pointerlock/PointerLockTest.html –

+0

Grundsätzlich ist die Idee, dass du dich entscheiden musst um welche 2 Achsen drehen sich die Bewegungen des gesperrten Zeigers (mein Beispiel geht davon aus, dass die X-Mausbewegung um die Y-Achse rotiert und die Y-Mausbewegung um die X-Achse rotiert, was ziemlich typisch wäre). Als nächstes müssen Sie entscheiden, welche Bewegung die Pfeiltasten bilden, in meiner Sprache bedeutet "vorwärts" und so weiter (wieder, ziemlich typisch). Sobald diese Entscheidungen getroffen sind, ist es nur die übliche Trigonometrie, um eine Richtung und eine Größe für jede der vier "Richtungen" zu erhalten. –

Verwandte Themen