【问题标题】:Collision separation - CORONA碰撞分离 - CORONA
【发布时间】:2014-07-07 10:08:54
【问题描述】:

当喷射物体撞击任何地雷或水果时,它会爆炸,相反,当我尝试将碰撞与非胶体物体分开时,它不起作用。这是我使用过的代码

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 

我需要在哪里更改以指定“地雷”对象爆炸和“食物”对象隐藏并继续移动喷气机的更改?请帮我解决

【问题讨论】:

    标签: lua coronasdk collision


    【解决方案1】:

    你需要在最后一个方法中指定onCollision,检查object2名称是"mine1"还是"food1",然后你可以针对每个条件做具体的事情:

    function onCollision(event)
        local object1Name = event.object1.name
        if event.phase == "began" and "jett" == object1Name then
            if "mine1" == object1Name then
                -- Do something with the mine
            elseif "food1" == object1Name then
                -- Do something with food
            else
                if jet.collided == false then 
                    jet.collided = true
                    jet.bodyType = "static"
                    explode()
                    storyboard.gotoScene("restart", "fade", 400)
                end
            end
        end
    end 
    

    【讨论】:

    • 当我给if "mine1" == object1Name then event.object2.isVisible = false 提供条件时,它工作正常但对象“jet”开始弹跳。如何避免碰撞时弹跳
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2017-08-24
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多