我正在制作一场无休止的跑步比赛(例如canabalt,太空跑,Jetpack Joyride),我试图让人感觉到#34;感觉"它是对的到目前为止,我使用以下等式设置速度:
speed = (time+500)*(.05+(time/300))
除了试错之外,有关如何使增加感觉恰到好处的任何提示?
答案 0 :(得分:2)
好吧,我在我的一个游戏中做了类似的事情,但我并没有不断提高速度,我每分钟增加一次或者一旦玩家达到一定数量的积分。像这样:
- (void)setTravelTimeTo:(NSNumber*)targetTime
{
if (maxTravelTime > targetTime.floatValue)
{
maxTravelTime -= 0.1f;
[self performSelector:@selector(setTravelTimeTo:) withObject:targetTime afterDelay:2];
}
}
maxTravelTime
的时间或速度。只需修改它以满足您的需求。在这种情况下,旅行时间是移动平台穿越整个屏幕所需的时间。
希望它有所帮助。
答案 1 :(得分:2)
一般来说,你要随时积累速度和位置。像
这样的东西a = <some function of current speed (drag), player actions, and terrain>
v = v + a*deltaTime
x = x + v*deltaTime
DeltaTime只是自上次计算以来的时间 - 可能是最后一帧。这意味着v应该与时间最多是线性的(不像公式中那样是二次的)。位置至多为二次方。 “a”的计算应确保当v接近某个最大速度(可能取决于水平)时,“a”变为零。