这是代码:
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()
答案 0 :(得分:0)
我无法重现这个问题:我拿了你发布的代码,创建了3个按钮,我将它添加到物理中作为动态对象,然后让它们落到行上。我每个身体都有一个打印输出。代码中的其他地方正在发生一些事情。你能创建一个最小的独立示例,它可能会变得明显是什么问题。
要检查的一些事项:
print(a, event.other)
以查看其他碰撞是否涉及不同的球,这表明物理引擎仍在进化已经通过线的球关于风格的说明: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)
。