我正在制作一个没完没了的跑步游戏(例如 canabalt、temple run、Jetpack Joyride),并且我正在努力让它的“感觉”正确。到目前为止,我使用以下等式来设置速度:
speed = (time+500)*(.05+(time/300))
除了反复试验之外,还有什么技巧可以让你感觉增加恰到好处?
我正在制作一个没完没了的跑步游戏(例如 canabalt、temple run、Jetpack Joyride),并且我正在努力让它的“感觉”正确。到目前为止,我使用以下等式来设置速度:
speed = (time+500)*(.05+(time/300))
除了反复试验之外,还有什么技巧可以让你感觉增加恰到好处?
好吧,我在我的一个游戏中做了类似的事情,但我并没有不断地提高速度,我每分钟增加一次,或者一旦玩家达到一定数量的分数。像这样:
- (void)setTravelTimeTo:(NSNumber*)targetTime
{
if (maxTravelTime > targetTime.floatValue)
{
maxTravelTime -= 0.1f;
[self performSelector:@selector(setTravelTimeTo:) withObject:targetTime afterDelay:2];
}
}
时间在哪里maxTravelTime
,或者在你的情况下速度在哪里。只需修改它以满足您的需求。在这种情况下,行程时间是移动平台穿过整个屏幕所需的时间。
希望能帮助到你。
一般来说,你会在前进的过程中积累速度和位置。所以像
a = <some function of current speed (drag), player actions, and terrain>
v = v + a*deltaTime
x = x + v*deltaTime
DeltaTime 只是自上次计算以来的时间——可能是最后一帧。这意味着 v 最多应该与时间成线性关系(而不是公式中的二次方)。位置最多是二次方。“a”的计算应确保当 v 接近某个最大速度(可能取决于级别)时,“a”变为零。