ゴーストの再生-ストレージとタイミング
私はカーレースゲームに取り組んでおり、過去のレースを再生するためのゴーストスプライトを実装しました。私は物理エンジンを使用していて、多くの資料を読んだ後、再生のためにゴーストデータを保存する最良の方法は、たとえばhttps:// gamedevで説明されているように、特定の時点での車の位置と回転を記録することであるという結論に達しました。 stackexchange.com/a/8380/26261。 しかし、リプレイ中にそれらのタイムポイントを見つけるための良い方法は何でしょうか?例は、次のデータを持つレコードです。 time: +3.19932 (seconds since race start) position: 180,40 (position at that time) rotation: 30.4 (rotation at that time) しかし、それにはいくつかの問題があります。 再生すると、3.19932の正確なタイムポイントに再び到達する可能性は低くなります。おそらく、3.1前後のタイムポイントがあり、最も近いレコードを見つける必要があります。補間する場合は、上下の最も近い一致でも。これは非常に非効率的で時間がかかるように思えますか? 後で再生するために、これらのレコードをどのリスト構造に保存できますか?配列?これは、特定の時間に一致するレコードの検索時間が、レースが長くなるほど長くなることを意味しませんか? タイムポイントにはどの頻度を使用する必要がありますか?各フレームは-おそらく-やりすぎです。むしろ、n番目のフレームごとに保存して、その間に補間する必要があります。これにより、2のストレージの質問がさらに難しくなります。 それで、このアイデアは正しいアプローチですか?はいの場合、どのようにしてデータを効率的に保存および取得できますか?私は通常、確定的なゲーム状態やユーザー入力の記録などではなく、上記のデータ構造を使用したいと思います。 助けてくれてありがとう! 編集:私が使用する環境を説明する必要があることを理解しています:Cocos2D for iPhone。方法がありupdate:(ccTime)deltaます。理想的には、このメソッドは1/60秒ごとに呼び出されますが、保証はありません。これはdelta、最後のゲームティックから経過した実際の時間であり、1/60よりもはるかに長い場合と少ない場合があります。このメソッドで、現在のゲーム状態を保存します。