“physics.stop() cannot be called when the world is locked and in the middle of number crunching, such as during a collision event”
This error is following me to complete my game
I’ll want to: If vidas < 0, open a menu.
local composer = require( "composer" ) local scene = composer.newScene() -- include Corona's "physics" library local physics = require "physics" local function fimDoJogo() composer.gotoScene("menu", "fade", 100) composer.removeScene("level1") return true end local screenW, screenH, halfW = display.actualContentWidth, display.actualContentHeight, display.contentCenterX function scene:create( event ) local background = display.newImageRect( "ceu.jpg", 640 , 856) background.x = display.contentCenterX background.y = display.contentCenterY local vidas = 1 local coracao = display.newImageRect( "coracao.png", 30, 30 ) placarvidas = display.newText(vidas, 320/2,50,native.systemFont,36) coracao.x = placarvidas.x coracao.y = 20 local aviao = display.newImageRect( "aviao.png", 112, 142 ) aviao.x = display.contentCenterX aviao.y = display.contentCenterY-50 temponuvem1 = math.random(500,750) temponuvem2 = math.random(500,750) local nuvem1 = display.newImageRect( "nuvem.png", 190, 190 ) nuvem1.x = -200 --display.contentCenterX nuvem1.y = display.contentHeight-25 function movernuvem1() transition.to(nuvem1, {time=temponuvem1, x= 320,y=nuvem1.y, onComplete= resetamovernuvem1 }) end function resetamovernuvem1() transition.to(nuvem1, {time=temponuvem2, x=0, y=nuvem1.y, onComplete = movernuvem1}) end local nuvem2 = display.newImageRect( "nuvem.png", 220, 200 ) nuvem2.x = -200 --display.contentCenterX nuvem2.y = display.contentHeight-450 function movernuvem2() transition.to(nuvem2, {time=750, x= 320,y=nuvem2.y, onComplete= resetamovernuvem2 }) end function resetamovernuvem2() transition.to(nuvem2, {time=750, x=0, y=nuvem2.y, onComplete = movernuvem2}) end local physics = require( "physics" ) physics.start() physics.addBody( nuvem1, "static" ) physics.addBody( nuvem2, "static" ) physics.addBody( aviao, "dynamic", { radius=30, bounce=0.3 } ) local function pushBalloon() aviao:applyLinearImpulse( 0, -0.35, aviao.x, aviao.y ) end movernuvem1() movernuvem2() aviao:addEventListener( "tap", pushBalloon ) local function checavida(evento) if evento.phase == "ended" then vidas = vidas-1 placarvidas.text = vidas if vidas \< 0 then physics.removeBody( aviao) fimDoJogo() end end end --aviao.collision = checavida Runtime:addEventListener( "collision",checavida ) end function scene:show( event ) local sceneGroup = self.view local phase = event.phase if phase == "will" then -- Called when the scene is still off screen and is about to move on screen elseif phase == "did" then -- Called when the scene is now on screen -- -- INSERT code here to make the scene come alive -- e.g. start timers, begin animation, play audio, etc. physics.start() end end function scene:hide( event ) local sceneGroup = self.view local phase = event.phase if event.phase == "will" then -- Called when the scene is on screen and is about to move off screen -- -- INSERT code here to pause the scene -- e.g. stop timers, stop animation, unload sounds, etc.) physics.stop() elseif phase == "did" then -- Called when the scene is now off screen end end function scene:destroy( event ) -- Called prior to the removal of scene's "view" (sceneGroup) -- -- INSERT code here to cleanup the scene -- e.g. remove display objects, remove touch listeners, save state, etc. local sceneGroup = self.view package.loaded[physics] = nil physics = nil end --------------------------------------------------------------------------------- -- Listener setup scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) ----------------------------------------------------------------------------------------- return scene