i am attempting to detect a collision based on the end of a touch and hold.
i use guide to detect the collision and plan to eventually add more guides to say too far, too close , and PERFECT!
but on the release of touch on the guide it doesn’t do anything until i hit the reset button, only then does it say “TOO FAR” the reset button is only temporary for game testing but seems to be the only way this plays out correctly.
the physics body is made large on purpose to get this portion of the game working before refining it to work as intended.
i attempted to add checkCollision to function movestick in the ended section but just get an error.
here is my code, Thanks in advance
----------------------------------------------------------------------------------------- -- -- main.lua -- ----------------------------------------------------------------------------------------- --seed number generator math.randomseed( os.time( )) local physics = require("physics") physics.start() physics.setGravity( 0, 0 ) physics.setDrawMode( "hybrid" ) local centerX = display.contentCenterX local centerY = display.contentCenterY local screenTop = display.screenOriginY local screenLeft = display.screenOriginX local bottomMarg = display.contentHeight - display.screenOriginY local rightMarg = display.contentWidth - display.screenOriginX local testText local backGround = display.newImageRect( "Images/Background.png", display.contentWidth, display.contentHeight) backGround.x = display.contentCenterX backGround.y = display.contentCenterY local stick = display.newImageRect("Images/stick.png" , 23 , 1083 ) stick.x = rightMarg - 85 stick.y = bottomMarg + 445 physics.addBody( stick, "dynamic", { isSensor=true } ) stick.myName = "stick" local resetButton = display.newCircle( screenTop + 35, screenLeft + 35 , 30 ) physics.addBody( resetButton, "static" , {radius = 30 , isSensor = true}) resetButton.alpha = 0.5 local stickobject stickobject = display.newImageRect( "Images/stickobject.png", 30 , 30 ) stickobject.x = rightMarg - 75 stickobject.y = bottomMarg -80 physics.addBody( stickobject, {radius = 15 , isSensor = true} ) stickobject.myName = "stickobject" local someObject someObject = display.newImageRect("Images/Object1.png", 150 , 500) someObject.x = centerX + screenLeft - 60 someObject.y = bottomMarg - 315 local guide = display.newImageRect( "Images/Line.png", 1067 , 10) guide.x = centerX guide.y = screenTop + 50 guide.alpha = 1.0 --change to 0.0 to get invisiable collision line. physics.addBody( guide, "dynamic", {isSensor = true} ) guide.myName = "Guide" local ground = display.newImageRect( "Images/Ground.png", 900.6 , 151.1 ) ground.x = centerX ground.y = bottomMarg - 40 --local function checkHeight(event) -- if (event.phase == "ended") then --end local function movestick(event) if ( event.phase == "began" ) then -- Code executed when the button is touched stick:setLinearVelocity(0,- 100) -- "event.target" is the touched object elseif ( event.phase == "ended" ) then -- Code executed when the touch lifts off the object stick:setLinearVelocity(0,0) end --if ( event.phase == "moved" ) then -- stick:setLinearVelocity(0,0) return true -- Prevents tap/touch propagation to underlying objects end local function checkCollision(event) -- check where the stick stopped if (event.phase == "ended" ) then local obj1 = event.object1 local obj2 = event.object2 if ( (obj1.myname == "Guide" and obj2.myName == "stick") or (obj1.myName == "stick" and obj2.myName == "Guide")) then testText = display.newText( "TOO FAR", display.contentCenterX, display.contentCenterY, native.systemFont, 80) testText:setFillColor(0,0,0) stick:setLinearVelocity(0,0) end end end local function resetGame(event) if ( event.phase == "began" ) then stick.x = rightMarg - 85 stick.y = bottomMarg + 445 display.remove( testText ) end end Runtime:addEventListener("collision" , checkCollision) stickobject:addEventListener("touch", movestick) resetButton:addEventListener("touch", resetGame)