我正在寻找一些数学,没有语言依赖。
"标准"游戏中对象的引力会是这样的:
if player.y > ground.y {
player.velocity.y = player.velocity.y - gravity
}
在我实施的小模拟中,我真的希望当玩家靠近地面时,引力会减弱,速度会减慢。
IE:当物体在地面以上100米处时,它应该比在地面以上1米时落下的速度快。它应该像羽毛一样落地。我认为重力需要是物体与地面之间距离的某种函数。
我一直在Google周围搜索,但由于我一段时间没有完成数学考试而且我不知道我要找的是什么名字,我已经知道了没有太多运气。
(注意:我考虑在SE上发布:游戏开发,但因为它更多关于数学/编程而不是游戏设计本身我虽然在这里更合适)
答案 0 :(得分:1)
你认为引力必须是一个函数才是正确的。以下代码段(来源:http://gafferongames.com/game-physics/integration-basics/)对更高的x值应用更多的重力,其中State是单个维度中位置和速度的结构。
float acceleration( const State &state )
{
const float k = 10;
const float b = 1;
return -k * state.x - b*state.v;
}
你想要反过来,你可以通过根据到地面的距离改变b的值,或者在某个阈值之后应用负加速度来实现。