【问题标题】:Object controll with mouse position relative to circle鼠标位置相对于圆的对象控制
【发布时间】:2013-08-22 03:20:59
【问题描述】:

需要一些灵感。我有一张图片(蓝色),并希望它在不可见区域(橙色)内与鼠标位置成比例移动。因此,如果鼠标在左上角方向移动,图像应该跟随移动。

我不想简单地复制鼠标位置,而是创建类似操纵杆的行为,因此如果鼠标移动,图像应该在所需方向上逐步移动。

但是怎么做呢?我不知道如何为图像设置正确的 x+y 坐标或如何建立计算它们的公式。

【问题讨论】:

  • 你有试过的代码吗?如果您真的不知道从哪里开始,我建议您查看这里的资源:@​​987654321@
  • 我用 PHP、JS、python 等开发,但只是一个数学问题,我无法处理
  • 实际坐标不需要计算,直接来自javascript事件。要确定鼠标与圆心的距离,cs.selu.edu/~rbyrd/math/distance
  • 我很难理解你的问题是什么;你能告诉我你想解释这个例子的哪一部分吗? jsfiddle.net/JkZH9
  • 非常感谢您的帮助和示例,但@OnoSendai 发布了正确答案

标签: javascript user-interface geometry game-physics joystick


【解决方案1】:

增量(矢量)位置。考虑:

  • 我们将不可见圆的死点称为矢量参考点 (0,0) 或 VRP。
  • 您将鼠标从 VRP 移开。让我们使用您的图像作为参考,并假设您的鼠标相对于 VRP 位于 (-3x -2y)。你把它放在那里;它创建一个 -3 X 向量和一个 -2 Y 向量。

  • 只要你把鼠标放在那里,这些向量就会在每个周期被应用到方块的当前坐标上,像这样:

    • 假设图片起始位置是绝对位置 100,100。
    • 循环 1:[x]:100 -3 = 97;[Y]:100 -2 = 97。新图片位置 = 97x98y
    • 循环 2:[x]:97 -3 = 94;[Y]:98 -2 = 96。新图片位置 = 94x96y

等等。如果要停止移动,只需将光标移回 VRP 即可。

您可以使用复杂的机制来创建加速度中间矢量,或矢量参考点周围的死区。

【讨论】:

  • 是的,确实如此,我已经使用您的想法实现了控件,看起来很棒,谢谢!
猜你喜欢
  • 2013-05-25
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 2014-04-22
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多