在我的2D游戏中,我有随机出现的英雄和硬币。当英雄上升时,他的速度增加,所以他飞得更快。上电有效10秒。当通电激活时,如果他接近硬币,硬币应跟随并与他在Temple Run中碰撞。我没有使用任何box2d类型的物理。对于碰撞,我使用矩形交叉检查,碰撞不是这里的问题。
如何实现硬币跟磁铁一样的英雄效应?
我目前的实施是 - 检查硬币组中每枚硬币与英雄之间的距离。如果满足硬币移动的目标距离,则根据英雄的速度在x上更改硬币的速度,但这不能按预期工作。我该如何应用冲动?
答案 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
是一个常数因素(只要硬币移动,直到硬币移动正确的速度)。