0

我正在制作一个没完没了的跑步游戏(例如 canabalt、temple run、Jetpack Joyride),并且我正在努力让它的“感觉”正确。到目前为止,我使用以下等式来设置速度:

speed = (time+500)*(.05+(time/300))

除了反复试验之外,还有什么技巧可以让你感觉增加恰到好处?

4

2 回答 2

2

好吧,我在我的一个游戏中做了类似的事情,但我并没有不断地提高速度,我每分钟增加一次,或者一旦玩家达到一定数量的分数。像这样:

- (void)setTravelTimeTo:(NSNumber*)targetTime
{
    if (maxTravelTime > targetTime.floatValue)
    {
        maxTravelTime -= 0.1f;
        [self performSelector:@selector(setTravelTimeTo:) withObject:targetTime afterDelay:2];
    }
}

时间在哪里maxTravelTime,或者在你的情况下速度在哪里。只需修改它以满足您的需求。在这种情况下,行程时间是移动平台穿过整个屏幕所需的时间。

希望能帮助到你。

于 2012-12-04T19:34:55.290 回答
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”变为零。

于 2012-12-04T19:45:51.447 回答