1

このように機能する簡単な衝突検出スクリプトを作成しました。ヒーローとオブジェクトの間の距離が x ピクセルの場合、ヒーローはオブジェクトと衝突しない場合 (ヒーロー + 3px =衝突なし) 彼は 5 ピクセル移動します。しかし、フレームレートも考慮する必要があるため、彼の速度に経過時間/20を掛けます私の問題は、ある時点でフレームレートが非常に低いか高い場合、彼は追加のピクセル(1px)だけ移動するだけです..チャンスは非常に小さいですが、まだ発生する可能性があります。これを防ぐにはどうすればよいですか?

4

1 に答える 1

1

衝突後チェックの最後に位置補正を追加するか、衝突前チェックの最後に速度補正を追加します。

ポスト コリジョン: オブジェクトはコリジョン ポイントに戻されます。

衝突前: オブジェクトの速度が一時的に変更されるため、次のフレームでは衝突点になります。

例:

  • オブジェクトは 75 ピクセル移動し、壁をトンネルします。何をすべきか?1-iteration-back の位置履歴が必要です。履歴を見ると、実際には壁の後ろにあり、現在の場所が xx ピクセルの壁を通過したことがわかります。次に、壁画の隣に新しい位置を設定しますbefore
  • いつ Android に遅れが生じるかわかりません。fps に依存しないようにするためには、より優れたアルゴリズムが必要です。どのように?fpsが再び安定するまで全世界を少し一時停止するか、ペイントする前に次の数回の反復を保存してから、ペイントする前に計算することができます。
于 2012-09-09T14:13:52.063 に答える