Corona sdk物理对象不会相互作用,但会检测碰撞

时间:2014-04-09 13:57:28

标签: lua corona physics

我和一个收集东西的人一起制作游戏,比如硬币。我想检测这两者之间的碰撞,所以我可以移除硬币,但我不希望硬币与角色互动,因为现在它正在慢慢地放慢他的速度。它应该在碰撞之前与地面相互作用。谢谢你的帮助!

function createCoin()
    for i = 1, 10 do
        coin = display.newCircle(0, 0, 16)
        coin.x = totallength - 1000 + i * 100
        coin.y = totalheight - 200

        physics.addBody(coin,
            {bounce = 0, friction = 1, density = 0}
        )

        game:insert(coin)
        coin.myName = "coin"
    end
end

createCoin()

local function onCollision(event)
    if event.phase == "began" then
        if (event.object1.myName == "coin" and
                event.object2.myName == "wheel") then

            event.object1:removeSelf();     
        end 
    end
end

1 个答案:

答案 0 :(得分:1)

您无法在碰撞处理过程中删除碰撞中涉及的对象:请参阅Collision event页面上的“修改对象”。如文档所示使用timer.performWithDelay()。这样可以防止您的硬币与玩家互动。如果没有工作,你可以创建一个“鬼”对象跟随硬币到处(相同的大小放置等但不可见)并作为传感器添加到物理。传感器不会导致碰撞动态,但事件被触发。你会如果需要移除,还需要延迟移除硬币。