Corona SDK中的物理对象没有交互作用,但可以检测碰撞。

我正在和一个收集物品(如硬币)的角色一起开发游戏。我想检测两者之间的碰撞,以便我可以消除硬币,但我不希望硬币与角色产生交互,因为它会稍微减慢角色的移动速度。但是,在碰撞之前,硬币应该仍与地面互动。感谢您的帮助!

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
点赞
用户869951
用户869951

你不能在碰撞处理期间删除涉及到碰撞的对象: 请参见 碰撞事件 页面上的"修改对象"。按照文档使用 timer.performWithDelay(),这应该可以防止你的硬币与玩家交互。如果不起作用,你可以创建一个“幽灵”对象,它跟随硬币到处移动(大小和位置相同,但不可见),并作为传感器添加到物理系统中。传感器不会引起碰撞动力学,但会触发事件。如果希望删除硬币,还需要进行延迟删除。

2014-04-09 19:03:22