3

我正在尝试在椭圆路径中移动多个精灵(图像),以使距离(弧距)保持一致。

我试过了

  • 逐个角度移动每个精灵角度,但问题是围绕主轴移动单位角度时移动的距离与围绕短轴移动单位角度时移动的距离不同 - 因此移动的距离不同。

  • 仅通过均匀更改 x 轴来移动精灵,但它再次围绕主轴移动更多。

那么有什么想法如何在不相互追赶/重叠的情况下均匀地移动精灵?

其他信息:

  • 它将在 onMouseMove/onTouchMoved 中调用,所以我想它不应该占用太多 CPU。
  • 虽然它是一个通用的算法问题,但如果它有帮助,我正在使用 cocos2d-x
4

1 回答 1

1

所以这就是我最终要做的(这为我解决了):

我以圆方程移动它并将角度增加了 1 度。使用 sin/cos(angle) * 半径计算 x 和 y。为了使它变成一个椭圆,我将它乘以一个因子。

因子是 yIntercept/xIntercept。

所以最终看起来像这样

FACTOR = Y_INTERCEPT / X_INTERCEPT;

//calculate previous angle
angle = atan((prev_y/FACTOR)/prev_x);

//increase angle by 1 degree (make sure its not radians in your case)
angle++;

//new x and y
x =  cos(newangle) * X_INTERCEPT;
y =  sin(newangle) * X_INTERCEPT * FACTOR;
于 2012-12-02T13:28:26.783 回答