0

100 回中 99 回正常に動作するように見えるゲーム/物理プロトタイプがあります。しかし、レベルの「リセット」(使用がこれを開始したとき)で、プレーヤーが開始点に立っているとすぐにコレクションが発生することがよくありますが、これは予想外です。この時点で物理が一時停止し、プレイヤーの体も「非アクティブ」になっているため、リセット フェーズ中に衝突が発生するのはなぜでしょうか。

質問: 以下の「リセット レベル」コード フェーズで競合が発生する場合はありますか? すべてが順番に発生するため、これが問題になる可能性があるかどうか疑問に思っていますか? このセクションのいくつかの部分は、おそらく「performAfterDelay」が本当に必要ですか。

-- PLAYER IN MOTION 
2013-09-10 11:24:56.035 Corona Simulator[6677:707] Player.isBodyActive = true


-- COLLISION OCCURS
2013-09-10 11:24:57.453 Corona Simulator[6677:707] onPlayerCollision:began:     
2013-09-10 11:24:57.453 Corona Simulator[6677:707] physics.removeBody(Player)


-- RESET LEVEL HIT (Get collision every so often on restart during this phase, but why?)
2013-09-10 11:25:01.644 Corona Simulator[6677:707] physics.pause()
2013-09-10 11:25:01.645 Corona Simulator[6677:707]   physics.addBody( Player, "dynamic")    -- add body back
2013-09-10 11:25:01.645 Corona Simulator[6677:707]   Player.isBodyActive = false            -- make inactive until after motion is started
2013-09-10 11:25:01.645 Corona Simulator[6677:707] physics.start()

時間の表示を指定するために、ログを使用してコードを作成しました...

4

1 に答える 1

0

更新:私はそれを持っていると思います(さらにテストが必要です)が、「Player.isBodyActive = false」を有効にするためにphysics.startを遅らせる必要があるようです。最後の行:

timer.performWithDelay(100, 
   function(event)
        physics.start()
    end
)
于 2013-09-10T06:00:00.927 に答える