私はエンドレス ランニング ゲーム (例: canabalt、temple run、Jetpack Joyride) を作成しており、その「感触」を正しく理解しようとしています。これまでのところ、次の式を使用して速度を設定しています。
speed = (time+500)*(.05+(time/300))
試行錯誤以外に、増加を適切に感じるためのヒントはありますか?
私はエンドレス ランニング ゲーム (例: canabalt、temple run、Jetpack Joyride) を作成しており、その「感触」を正しく理解しようとしています。これまでのところ、次の式を使用して速度を設定しています。
speed = (time+500)*(.05+(time/300))
試行錯誤以外に、増加を適切に感じるためのヒントはありますか?
ええと、私は自分のゲームの 1 つで似たようなことをしましたが、常に速度を上げるのではなく、1 分ごとに、またはプレイヤーが一定のポイントに到達したら速度を上げました。そのようです:
- (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 は時間に対してせいぜい線形である必要があるということです (数式のように 2 次ではありません)。位置はせいぜい 2 次です。"a" の計算では、v が最大速度 (おそらくレベルに依存) に近づくと、"a" がゼロになるようにする必要があります。