То, что я намереваюсь сделать, - это положение круга в направлении положения курсора мыши, это все относительно мира, просматриваемого через холст. Чтобы сохранить ручку скорости, с которой перемещался круг, я решил сделать границу больше круга, если мышь находится за пределами границы, тогда «позиция» мыши доведена до границы, так что, когда я приближаюсь к coords, если они arent сверх далеки от положения круга он не движется на сумасшедших скоростях. У меня есть эта работа, и это код, который делает это:Аркирующие координаты от A до 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;
}
}
Магия для «вне границы» лежит во времени. Это лучшее исправление, которое я мог бы придумать, и я не могу видеть это как элегантное или быстрое решение, и мне интересно, какой должен быть правильный курс действий.
Im художник, но, надеюсь, этот образ помогает проиллюстрировать то, чего я пытаюсь достичь. Черная точка - это мышь, черный круг - круг, а красный круг - это граница, которую я указал. Я хочу, чтобы получить COORDS ознаменовались X.
Только боковое примечание, о котором я забыл упомянуть, это делается полностью в javascript. – Rhexis
Вам нужно найти координату точки в круге заданного радиуса (заданную координату центра и мыши)? – MBo