如何让我的传感器在电晕sdk中正常工作?

时间:2014-04-07 14:07:04

标签: android ios lua corona

这是代码:

local bottombar = display.newLine(0, 480, 340, 480)
physics.addBody(bottombar, "static", {isSensor = true})

function bottombar:collision(event)
    if(event.phase == "began") then
        a = a + 1
        print(a)

        if(a == 4) then
            timer.cancel(timer1) 
            storyboard.gotoScene("scene_results")
        end
    end
end

bottombar:addEventListener("collision", bottombar)

end

游戏会产生摔倒的球,并且当3球通过底线时我想停止比赛。可变的' a'最初是0,当第一个球通过控制台的线路时,#39; a'当第二个球越过线时,控制台告诉我“#”是2,在下一行3是这样的:

1   => first ball
2  }
   }=> second ball
3  }  

如果我为第一球做出if(a == 10)' a'是2,对于第二球' a'是(2,3),对于第3个' a'是(4,5,6),当第4球通过线路时,' a'是(7,8,9,10)。

或者如果我摧毁3个球(self:removeSelf()当我触摸它们时)我让第4个球通过直线进入' a'成为:

1
2
3
4

如果我有语法错误,我很抱歉。

这是整个代码,我无法弄清楚我做错了什么:

local a = 0
local score = 0

local function game()
    local pop = audio.loadSound("pop.WAV")
    local masterVolume = audio.getVolume()

    local function createCircle()
        function onCircleTouch(self, event)
            if(event.phase == "began") then
                timer.performWithDelay(1, function() 
                    self:removeSelf() 
                    audio.play(pop,{channel=0,loops=0}) 
                    score=score+10  
                    globals.score = score 
                end )
            end
            return true
        end
        local circle = display.newImage("ballon2.png",math.random(10,300),0)
        physics.addBody( circle, "dynamic", { desity=1.0,friction=0 })
        circle.touch = onCircleTouch
        circle:addEventListener("touch", circle)
    end      

    local function balls(event) 
        createCircle()
        local bottombar=display.newLine(0, 480, 340, 480)
        physics.addBody(bottombar, "static" ,{isSensor=true})
        function bottombar:collision(event)
            if(event.phase == "began") then
                a=a+1
                print (a, event.other)
                if( a == 3) then
                    timer.cancel(timer1)
                    storyboard.gotoScene( "scene_results" )
                end
            end
        end
        bottombar:addEventListener("collision", bottombar)
    end

    timer1=timer.performWithDelay( 1000, balls, 0 )
end

game()

2 个答案:

答案 0 :(得分:0)

我无法重现这个问题:我拿了你发布的代码,创建了3个按钮,我将它添加到物理中作为动态对象,然后让它们落到行上。我每个身体都有一个打印输出。代码中的其他地方正在发生一些事情。你能创建一个最小的独立示例,它可能会变得明显是什么问题。

要检查的一些事项:

  1. 确认您在碰撞事件中没有移除碰撞球。必须延迟删除
  2. 将打印更改为print(a, event.other)以查看其他碰撞是否涉及不同的球,这表明物理引擎仍在进化已经通过线的球
  3. 关于风格的说明:Lua在()条件下不需要if()是多余的,只会增加噪音。

答案 1 :(得分:0)

最后我找到了解决问题的方法。我把local score = 0放在了下面:

local bottombar=display.newLine(0, 480, 340, 480)
physics.addBody(bottombar, "static" ,{isSensor=true})

在此之下,我放了bottombar:addEventListener("collision", bottombar)