将对象延迟移动到另一个对象

时间:2012-10-31 13:26:20

标签: java android libgdx

在我的2D游戏中,我有随机出现的英雄和硬币。当英雄上升时,他的速度增加,所以他飞得更快。上电有效10秒。当通电激活时,如果他接近硬币,硬币应跟随并与他在Temple Run中碰撞。我没有使用任何box2d类型的物理。对于碰撞,我使用矩形交叉检查,碰撞不是这里的问题。

如何实现硬币跟磁铁一样的英雄效应?

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

1 个答案:

答案 0 :(得分:3)

将其更改为距离的倒数。供参考,Newton's (mostly correct) law of Universal Gravitation

F是力,G是常数,r是半径(分离距离),m1是硬币的质量,{ {1}}是英雄的大众。

我们也知道Newton's Second Law of Motion

m2是力,F是硬币的质量,m是硬币的加速度。

我们可以将这两个方面结合起来得到:

从那里,我们知道英雄的“质量”将与英雄的区域成比例(2D物体实际上没有质量但是只是假装一秒钟),换句话说:

假设你在所有方向上均衡地扩展你的英雄,这意味着你的英雄的“质量”将与大小比例因子a的平方成正比,如下所示:

这一切归结为:

S是加速度(您要查找的数量),a是英雄大小的比例因子,S是从英雄到硬币的距离,d是一个常数因素(只要硬币移动,直到硬币移动正确的速度)。