2017-01-06 6 views
0

私はコロナ/ box2dの "障害物"オブジェクトを移動する適切な方法を理解しようとしています。私は自分のコードを書く方法を知りたいので、動きが決定論的であり、物理エンジンと歩調を合わせています。これは可能ですか?"障害物"オブジェクトを移動する方法。コロナSDK物理ボックス2D。物理学の更新?

物理アップデートを持つUnity(FixedUpdate)に精通しています。すべての物理ステップで実行するコードを追加できます。これにより、物理的な決定論的、フレームとシステムの時間の独立性が保たれます。

たとえば、私のゲームでは、次のようなことをしたいと思います。前後に移動するプラットフォームを作り、上下に拡大縮小するオブジェクトを作成します。私は物理学が適切に機能し、私のゲームの球がこれらから飛び跳ねるようにすることができます。場合によっては、kinematic or dynamic bodiesのいずれかを使用する必要があります。

私は周りに検索したし、定期的にこれらのオブジェクトを操作する方法は、使用することです。

  • timer.performWithDelay。しかし、これは "システム時間に実行されるタイマー"というドキュメントに記載されている問題があります。アプリが一時停止されていても、実行中のタイマーは自動的に一時停止しません "
  • enterFrameイベントを待ち受けます。しかし、これは同様の問題を抱えています。フレームレートが低下した場合、オブジェクトは十分に動かされません。これに対処するためにデルタタイムを使うことができますが、これには決定論的な問題があります(オブジェクトを遅すぎるスパイクであまりにも多く移動させる)。
  • transition.to。私はこれがtimer.performWithDelayで実装されていると思いますが、同じ問題があります。

私はこれらのどれもが決定的に行動するとは思わない。助言がありますか?助けてくれてありがとう。

+0

他の方法がありません。 「タイマーはシステム時間に実行されますか?アプリが一時停止されている場合、実行中のタイマーは自動的に一時停止されません」というのは本当に問題ですか?アプリケーションが中断されたときを検出できます。もっと読む[チュートリアル:コロナシステムイベントの処理](https://coronalabs.com/blog/2012/05/15/handling-corona-system-events/) – ldurniat

+0

物理モデルのように見えるこれらすべてのタイミングの副作用があります。 「enterPhysicsStep」イベントはこれを解決することができました – 1337Rooster

+0

表示グループを試してみましたか?それとも、物理的な更新でロックステップを実行する必要があるのでしょうか? – Amir

答えて

0

あなたは本当に使用する必要があります。

object:setLinearVelocity(xVelocity, yVelocity) 

または

object:applyForce(xForce, yForce) 

の代わりtransition.to。