2013-08-21 5 views
0

Нужно вдохновение. У меня есть изображение (синее) и хочу, чтобы он перемещался пропорционально положению мыши внутри невидимой области (оранжевый). Итак, если мышь перемещается в верхнем левом направлении, изображение должно следовать за движением.Управление объектом с положением мыши относительно круга

Я не хочу просто копировать положение мыши, а скорее создаю поведение джойстика, поэтому, если мышь перемещается, изображение должно двигаться пошагово в нужном направлении.

Но как? Я понятия не имею, как установить правильные координаты x + y для изображения или как установить формулу для их вычисления.

Movement

+0

У вас есть какой-либо код, который вы пробовали? Если вы действительно не знаете, с чего начать, я бы рекомендовал посмотреть на ресурсы здесь: http://stackoverflow.com/questions/11246/best-resources-to-learn-javascript –

+0

Я разрабатываю с помощью PHP, JS, python и т. Д. но это просто математическая проблема, с которой я не могу справиться –

+0

Фактические координаты не нужно вычислять, они поступают непосредственно из событий javascript. Чтобы определить, как далеко находится мышь от центра круга, http://cs.selu.edu/~rbyrd/math/distance/ –

ответ

1

инкрементальные (переносимые) позиции. Рассмотрим:

  • Давайте назовем мертвой вашей невидимой окружности вектор опорной точки (0,0) или VRP.
  • Вы перемещаете мышь от VRP. Давайте используем ваше изображение как ссылку и скажем, что ваша мышь находится на (-3x -2y) относительно VRP. Вы держите его там; Он создает вектор 3 X и вектор -2 Y.

  • Для тех пор, пока вы держите мышь там, эти векторы будут применены к текущей координате в каждом цикле, как это на площадь в:

    • Предположит положение стартера Изображения является абсолютным 100100.
    • Цикл 1: [x]: 100 -3 = 97; [Y]: 100 -2 = 97. Новое положение изображения = 97x98y.
    • Цикл 2: [x]: 97 -3 = 94; [Y]: 98 -2 = 96. Новое положение изображения = 94x96y.

И так далее. Если вы хотите остановить движение, верните курсор обратно в VRP.

Вы можете усложняем механизм ускорения, создавая промежуточные векторы, или мертвую зону вокруг вектора опорной точки.

+0

Простой, но блестящий, большое спасибо, сделал мой день! –

+0

Вы, несомненно, будете рады; надеюсь, что это сработает для вас! – OnoSendai

+0

Да, это так, я реализовал контроль, используя вашу идею, и это выглядит великолепно, спасибо! –

Смежные вопросы