飛行機レースゲームを作る(6):タイム計測とリプレイ機能
タイム計測とリプレイ機能
タイム計測はシンプルで、当たり判定用に配置したプレーンを使って、スタート地点のゲートでタイマーをスタートして、ゴール地点のゲートでタイマーをストップすればOK。また、ゴール時には途中で発生したペナルティタイムを加算します。
脱線:飛行機のレースは、自動車のレースとは違い道路のような、「ここを走ればよい」という経路がありません。このため、矢印で飛行経路をガイドしました。
実際のコースでは、同じゲートを2回以上通過する場合もあり、それを一度に表示してしまうと飛行経路の矢印が交差し、とても分かり辛くなります。
そこで、同じゲートを通過するかどうかを境に(実際には1ゲート手前で)、飛行経路の矢印を分割し、ゲート通過をきっかけに飛行経路を更新していくことにしました。
リプレイ機能は、上の動画そのものです。実際にプレイヤーが操作した時の、飛行機の位置座標と姿勢を記録しておき、プレイヤーの操作情報の代わりに、飛行を制御するコードに与えることで、飛行を再現します。この実現には下記の記事が大変参考になりました。
あとは見せ方として、カメラをどこに配置するか、になります。プレイヤーが飛行操作を行う場合は、飛行機の後方にカメラを固定しますが、リプレイ時にはそれっぽく見える位置に配置した方がよさそうです。
そこで、各ゲートを通過する前後で、カメラの位置を切り替えることにしました。
それには、各ゲートの位置をつなげたパスを生成しておき、ゲートを通過してから数秒後に、通過ゲートと次のゲートの中間地点を、生成したパスから自動計算して、カメラ位置を切り替えます。カメラは飛行機を追従するように設定しておけば、それっぽいカメラワークになります。
これが最善の方法ではないとは思いますが、まず一案として。AirRace のリプレイをさせることが、このゲーム作製の一番の動機だったので、TV中継のような固定カメラからのズームショットも見られるようにしていきたいと思います。。
次回は:飛行機レースゲームを作る(7):計器の実装