如何让一个物理体不与另一个发生碰撞。

我在屏幕上有两个重叠的图像,称为A和B。我还有第三个图像C,用户可以在屏幕上移动。其中较大的一个(A)会在碰撞时将C重置到生成点。我需要知道如何使C可以在图像B上行走,而不会重置到生成点。即图像B重叠图像A并取消了碰撞函数。 以下是代码:

点赞
用户828255
用户828255

你需要在 waterCollide 函数下设置一个条件,以阻止重新生成。

根据你所需的复杂程度,你可以简单地检查 frog 的位置是否在 log1 的范围内,或者你可以让 log1任何未来的日志 拥有它们自己的碰撞事件,当碰撞发生时设置一个 标记,以阻止重新生成,然后在与任何日志的碰撞结束时清除标记。

以下是一个例子:

local onLog = 0

function frogDie()
    lives = lives - 1
    display.remove(frog)
    frog = display.newImageRect("FrogTest.png",32,48)
    frog.x = display.contentWidth*0.5
    frog.y = 504
    physics.addBody(frog, "dynamic")
    frog.isFixedRotation = true
end

function waterCollide(event)
    if onLog < 1 then frogDie() end
end

function logCollide(event)
    if event.phase == 'began' then
        onLog = onLog + 1
    else
        onLog = onLog - 1
    end
end

log1:addEventListener("collision", logCollide)
--log2:addEventListener("collision", logCollide)

使用数字来跟踪青蛙是否在日志上,应该比布尔值更安全,因为日志可能会重叠并在多次碰撞通过之前清除标记并正确重置。

2013-11-04 16:06:59