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

更新:认为我有它(需要更多测试),但似乎我确实需要延迟physics.start 以允许“Player.isBodyActive = false”生效。所以现在最后一行:

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