Vektoren sind eigentlich nicht viel anders, als Koordinaten, beschreiben aber mehr eine Richtung als einen konkreten Punkt. Ein Vektor hat im 2-dimensionalen ein X und ein Y.
Wenn sich der Spieler an der Position 100, 100 befindet und die Maus bei 200, 135, dann ergibt das die Vektoren (100 | 100) und (200 | 135). Wie beim Berechnen der Steigung, rechnet man dann zunächst die Differenz aus:
(200 | 135) - (100 | 100) = (200 - 100 | 135 - 100) = (100 | 35)
Danach rechnet man die Länge des Vektors aus. Wenn man es sich also als Dreieck vorstellt, kann man es mit a² + b² = c² berechnen:
c = Wurzel aus (100² + 35²) ~ 106
Wenn man eine Zahl durch sich selbst teilt, erhält man 1. So verhält es sich auch mit einem Vektor und seiner Länge: Teilt man X und Y des Vektors durch seine Länge, erhält man einen Einheitsvektor, dessen Länge 1 ist (normalisieren).
Also:
(100 | 35) / 106 = (100 / 106 | 35 / 106) = (0,94 | 0,33)
Dadurch, dass der Vektor normalisiert wurde, wird jedes Projektil die gleiche Geschwindigkeit haben.
Diesen Vektor kann man dann in jedem Frame zu dem Projektil hinzufügen.
Wenn das Projektil bei (100 | 100) startet, wäre es im nächsten Frame bei (100 | 100) + (0,94 | 0,33) = (100,94 | 100,33).
Ein Ausnahmefall wäre, wenn die Mausposition gleich der Spielerposition ist, da dann die Länge 0 ist. Aber da könnte man ja bspw. die X-Koordinate um 1 verschieben.
Wie man es genau in Javascript machen kann, weiß ich auch nicht, da ich mich damit nicht auskenne, aber zur Not kann man die Berechnungen auch einzeln durchführen, ohne konkret Vektoren zu benutzen.