我和一个收集东西的人一起制作游戏,比如硬币。我想检测这两者之间的碰撞,所以我可以移除硬币,但我不希望硬币与角色互动,因为现在它正在慢慢地放慢他的速度。它应该在碰撞之前与地面相互作用。谢谢你的帮助!
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
答案 0 :(得分:1)
您无法在碰撞处理过程中删除碰撞中涉及的对象:请参阅Collision event页面上的“修改对象”。如文档所示使用timer.performWithDelay()
。这样可以防止您的硬币与玩家互动。如果没有工作,你可以创建一个“鬼”对象跟随硬币到处(相同的大小放置等但不可见)并作为传感器添加到物理。传感器不会导致碰撞动态,但事件被触发。你会如果需要移除,还需要延迟移除硬币。