【问题标题】:why would I get spurious collision events in this Corona SDK code snippet?为什么我会在这个 Corona SDK 代码片段中得到虚假的碰撞事件?
【发布时间】:2013-09-10 03:27:43
【问题描述】:

我有一个游戏/物理原型,在 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()

我已经将代码与日志一起用于给出时间指示...

【问题讨论】:

    标签: box2d coronasdk physics game-physics


    【解决方案1】:

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

    timer.performWithDelay(100, 
       function(event)
            physics.start()
        end
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2017-08-24
      • 1970-01-01
      • 2016-06-17
      相关资源
      最近更新 更多