oky so from you comments Andrew i have done this :
badc1CollisionFilter = { categoryBits = 1, maskBits = 16 } badc2CollisionFilter = { categoryBits = 2, maskBits = 16 } badc3CollisionFilter = { categoryBits = 4, maskBits = 16 } wallCollisionFilter = { categoryBits = 8, maskBits = 16 } playerCollisionFilter = { categoryBits = 16, maskBits = 15 } function getRandomStar() local temp = starTable[math.random(1, #starTable)] -- Get a random star from starTable local randomStar = display.newImage(temp.imgpath) -- Set image path for object if ( temp.imgpath == "BCloud1.png" ) then physics.addBody( randomStar, { density=.1, bounce=0.1, friction=.2, radius=45, filter=badc1CollisionFilter } ) randomStar.myName = "star1" temp.imgpath = "BCloud"..tostring(math.random(1, 3))..".png"; end if ( temp.imgpath == "BCloud2.png" ) then physics.addBody( randomStar, { density=.1, bounce=0.1, friction=.2, radius=45, filter=badc2CollisionFilter } ) randomStar.myName = "star2" temp.imgpath = "BCloud"..tostring(math.random(1, 3))..".png"; end if ( temp.imgpath == "BCloud3.png" ) then physics.addBody( randomStar, { density=.1, bounce=0.1, friction=.2, radius=45, filter=badc3CollisionFilter } ) randomStar.myName = "star3" temp.imgpath = "BCloud"..tostring(math.random(1, 3))..".png"; end randomStar.myName = "star" -- Set the name of the object to star randomStar.movementSpeed = temp.movementSpeed; -- Set how fast the object will move randomStar.x = math.random(-30, \_W); randomStar.y = -35; randomStar.rotation = math.random(0,20) -- Rotate the object starMove = transition.to(randomStar, { time=randomStar.movementSpeed, y=500, onComplete = function(self) self.parent:remove(self); self = nil; end }) -- Move the star end--END getRandomStar() playerSpriteSheet = sprite.newSpriteSheet("player.png", 113, 55) playerSprites = sprite.newSpriteSet(playerSpriteSheet, 1, 4) sprite.add(playerSprites, "players", 1, 4, 1000, 0) player = sprite.newSprite(playerSprites) player.x = -80 player.y = 350 player:prepare("players") player:play() player.collided = false player:setReferencePoint(display.CenterReferencePoint); physics.addBody(player, "static", {density=.1, bounce=0.1, friction=.2, radius=10, filter=playerCollisionFilter } ) player.gravityScale = 0 screenGroup:insert(player) playerIntro = transition.to(player,{time=2000, x=150, onComplete=playerReady}) function newCollisionHandler( self, event ) if event.other.myName == "star1" then print( "Collided with star1" ) elseif event.other.myName == "star2" then print( "Collided with star2" ) elseif event.other.myName == "star3" then print( "Collided with star3" ) end end function scene:enterScene(event) player:addEventListener( "collision", newCollisionHandler ) end
and now i got the error : attempt to index local event (a nil value).
But this time the error corespondents to the image it collides whit, (so that a good sign ?)
ps if i add ‘function newCollisionHandler() end’ to the codel like so :
function newCollisionHandler() end playerSpriteSheet = sprite.newSpriteSheet("player.png", 113, 55) playerSprites = sprite.newSpriteSet(playerSpriteSheet, 1, 4) sprite.add(playerSprites, "players", 1, 4, 1000, 0) player = sprite.newSprite(playerSprites) player.x = -80 player.y = 350 player:prepare("players") player:play() player.collided = false player:setReferencePoint(display.CenterReferencePoint); physics.addBody(player, "static", {density=.1, bounce=0.1, friction=.2, radius=10, filter=playerCollisionFilter } ) player.gravityScale = 0 screenGroup:insert(player) playerIntro = transition.to(player,{time=2000, x=150, onComplete=playerReady})
its not detecting any collision
-kevin