碰撞分离 - CORONA

如果喷气式对象撞到了任何一个“矿物”或“水果”,它就会爆炸。但是,当我试图将碰撞从不可碰撞对象中分离出来时,它不起作用。这是我使用的代码:

jetSpriteSheet = sprite.newSpriteSheet("greenman.png", 225, 225)
jetSprites = sprite.newSpriteSet(jetSpriteSheet, 1, 4)
sprite.add(jetSprites, "jets", 1, 16, 500, 0)
jet = sprite.newSprite(jetSprites)
jet.x = 180
jet.y = 280
jet:prepare("jets")
jet:play()
jet.collided = false
jet.name = "jett"
physics.addBody(jet, {density=0.1, bounce=0.5, friction=1, radius=12})
screenGroup:insert(jet)

可碰撞对象

mine1 = display.newImage("mine.png")
mine1.x = 850
mine1.y = 250
mine1.name="mine1"
mine1.speed = math.random(2,6)
mine1.initY = mine1.y
mine1.amp = math.random(20,100)
mine1.angle = math.random(1,360)
physics.addBody(mine1, "static", {density=.1, bounce=0.1, friction=.2, radius=12})
screenGroup:insert(mine1)

不可碰撞对象

food1 = display.newImage("fruits.png")
food1.x = 650
food1.y = 250
food1.speed = math.random(2,9)
food1.initY = food1.y
food1.name = "food1"
food1.isFood = true
food1.isVisible =true
food1.amp = math.random(20,200)
food1.angle = math.random(1,180)
physics.addBody(food1, "static", {density=.1, bounce=0.1, friction=.2, radius=12})
screenGroup:insert(food1)

碰撞方法

function onCollision(event)

  if event.phase == "began" and "jett"  == event.object1.name then
    if jet.collided == false then
        jet.collided = true
        jet.bodyType = "static"
        explode()
        storyboard.gotoScene("restart", "fade", 400)
    end
end
end

我需要更改什么来指定“矿物”对象爆炸,“水果”对象隐藏并保持推进?请帮我解决。

点赞
用户1381216
用户1381216

你需要在最后的 onCollision 方法中指定它,检查 object2 的名字是否为 "mine1""food1",然后你可以根据每个情况做出特定的处理:

function onCollision(event)
    local object1Name = event.object1.name
    if event.phase == "began" and "jett" == object1Name then
        if "mine1" == object2.name then
            -- 做一些关于雷的事情
        elseif "food1" == object2.name then
            -- 做一些关于食物的事情
        else
            if jet.collided == false then
                jet.collided = true
                jet.bodyType = "static"
                explode()
                storyboard.gotoScene("restart", "fade", 400)
            end
        end
    end
end
2014-05-19 18:15:52