1

在我的 2D 游戏中,我有随机出现的英雄和硬币。当英雄获得能量提升时,他的速度会增加,因此他会飞得更快。上电激活 10 秒。当通电激活时,如果他靠近硬币,硬币应该跟随并与他碰撞,就像在 Temple Run 中一样。我没有使用任何 box2d 类型的物理。对于碰撞,我使用矩形相交检查,碰撞不是这里的问题。

如何实现这种硬币像磁铁一样跟随英雄的效果?

我目前的实现是 - 检查硬币组中每个硬币与英雄之间的距离。如果满足硬币移动的目标距离,则根据英雄的速度更改 x 上的硬币速度,但这并没有按预期工作。如何应用冲动?

4

1 回答 1

3

将其更改为在距离的倒数上工作。作为参考,牛顿(大部分是正确的)万有引力定律

哪里F是力量,G是一些常数,r是半径(分离距离),是硬币的质量,是英雄的质量。m1m2

我们也知道牛顿第二运动定律

哪里F是力,m是硬币的质量,是硬币a的加速度。

我们可以结合这两个方程得到:

从那里,我们知道英雄的“质量”将与英雄的面积成正比(2D 对象并没有真正的质量,但让我们假装一秒钟),换句话说:

假设你在所有方向上平等地缩放你的英雄,这意味着你的英雄的“质量”将与 size scale factor 的平方成正比S,如下所示:

这一切都归结为:

加速度在哪里a(您要寻找的数量),S是英雄大小的比例因子,d是英雄到硬币的距离,并且k是一个常数因子(只是捏造它,直到硬币以正确的速度移动)。

于 2012-10-31T13:56:13.713 回答