Ziel ist es, die Position eines Kreises in Richtung der Position des Mauszeigers zu zeichnen, alles relativ zur Welt, die durch die Leinwand betrachtet wird. Um die Geschwindigkeit, mit der sich der Kreis bewegt, im Griff zu behalten, entschied ich mich, eine Grenze größer als der Kreis zu machen. Wenn die Maus außerhalb der Grenze ist, wird die "Position" der Maus an die Grenze gebracht Wenn sie nicht weit von der Position des Kreises entfernt sind, bewegt sie sich nicht mit verrückten Geschwindigkeiten. Ich habe diese Arbeit, und das ist der Code, der es tut:Lichtbogenkoordinaten von A bis B
dx = Game.controls.mouseX - (this.x - xView); // get the distance between the x coords
dy = Game.controls.mouseY - (this.y - yView); // get the distance between the y coords
radii = this.radius + 1; // +1 because the "radius" of the mouse is 1
if((dx * dx) + (dy * dy) > radii * radii) // is the mouse not over the player?
{
if((dx * dx) + (dy * dy) < 301 * 301)
{
this.x += ((Game.controls.mouseX - (this.x - xView)) * 2/(this.mass)) + step;
this.y += ((Game.controls.mouseY - (this.y - yView)) * 2/(this.mass)) + step;
}
else
{
mx = Game.controls.mouseX;
my = Game.controls.mouseY;
do
{
dx = mx - (this.x - xView);
dy = my - (this.y - yView);
mx += (((this.x - xView) - mx) * 2/(this.mass)) + step;
my += (((this.y - yView) - my) * 2/(this.mass)) + step;
} while((dx * dx) + (dy * dy) > 301 * 301)
this.x += ((mx - (this.x - xView)) * 2/(this.mass)) + step;
this.y += ((my - (this.y - yView)) * 2/(this.mass)) + step;
}
}
Die Magie für ‚außerhalb der Grenze‘ liegt das do während withing. Dies ist die beste Lösung, die ich mir vorstellen konnte, und ich kann das nicht als eine elegante oder schnelle Lösung betrachten und frage mich, was die richtige Vorgehensweise sein sollte.
Ich bin kein Künstler, aber hoffentlich hilft dieses Bild zu veranschaulichen, was ich zu erreichen versuche. Der schwarze Punkt ist die Mausposition, der schwarze Kreis ist der Kreis und der rote Kreis ist die Grenze, die ich angegeben habe. Ich mag die coords durch die X markiert bekommen
Nur eine Randnotiz, die ich vergessen zu erwähnen, ist dies vollständig in Javascript erfolgt. – Rhexis
Müssen Sie eine Koordinate eines Punktes im Kreis mit gegebenem Radius (gegebener Mittelpunkt und Mauskoordinate) finden? – MBo