Hi w.baig84.
Just curious as to why your structuring your code like that. With the code below you can use one collision function to check against any colliding objects. Also I implemented a simpler way to create a new coin on collision.
This is how I would recommend doing it (let me know if it works!) :
(Based on the code you linked to )
local player = display.newImageRect(img1, playerW, playerH)
player:setReferencePoint(display.CenterReferencePoint)
physics.addBody( player, physicsData:get(physInfo) )
player.bodyType = "kinematic"
player.isFixedRotation = true
player.xScale = playerScale
player.yScale = playerScale
player.x = 50
player.y = \_H / 2
player.name = "player"
local coin1 ={}
local coins1
coins1 = {2,2.25,2.5,2.75,3}
local rand3 = math.random (2, #coins1 )
local coin1 = movieclip.newAnim{ "images/coins/coin1@2x.png",
"images/coins/coin2@2x.png",
"images/coins/coin3@2x.png",
"images/coins/coin4@2x.png",
"images/coins/coin5@2x.png",
"images/coins/coin6@2x.png",
"images/coins/coin7@2x.png",
"images/coins/coin8@2x.png",
"images/coins/coin9@2x.png",
"images/coins/coin8@2x.png",
"images/coins/coin7@2x.png",
"images/coins/coin6@2x.png",
"images/coins/coin5@2x.png",
"images/coins/coin4@2x.png",
"images/coins/coin3@2x.png",
"images/coins/coin2@2x.png",
"images/coins/coin1@2x.png",
}
coin1.xScale = 0.5
coin1.yScale = 0.5
coin1:play()
coin1:setReferencePoint(display.CenterReferencePoint)
localGroup:insert(coin1)
physics.addBody( coin1,"kinematic", {isSensor = true, radius = 13})
coin1.name = "coin 1"
coin1.x = \_W \* 2 + \_W/2
coin1.y = \_H / rand3
local coin2 ={}
local coins2
coins2 = {2,2.25,2.5,2.75,3}
local rand4 = math.random (2, #coins2 )
local coin2 = movieclip.newAnim{ "images/coins/coin1@2x.png",
"images/coins/coin2@2x.png",
"images/coins/coin3@2x.png",
"images/coins/coin4@2x.png",
"images/coins/coin5@2x.png",
"images/coins/coin6@2x.png",
"images/coins/coin7@2x.png",
"images/coins/coin8@2x.png",
"images/coins/coin9@2x.png",
"images/coins/coin8@2x.png",
"images/coins/coin7@2x.png",
"images/coins/coin6@2x.png",
"images/coins/coin5@2x.png",
"images/coins/coin4@2x.png",
"images/coins/coin3@2x.png",
"images/coins/coin2@2x.png",
"images/coins/coin1@2x.png",
}
coin2.xScale = 0.5
coin2.yScale = 0.5
coin2:play()
coin2:setReferencePoint(display.CenterReferencePoint)
localGroup:insert(coin2)
physics.addBody( coin2,"kinematic", {isSensor = true, radius = 13})
coin2.name = "coin 2"
coin2.x = \_W \* 3 + \_W/2
coin2.y = \_H / rand4
local function createCoin(x, y)
local coinAnim = movieclip.newAnim{ "images/coins/coin1@2x.png",
"images/coins/coin2@2x.png",
"images/coins/coin3@2x.png",
"images/coins/coin4@2x.png",
"images/coins/coin5@2x.png",
"images/coins/coin6@2x.png",
"images/coins/coin7@2x.png",
"images/coins/coin8@2x.png",
"images/coins/coin9@2x.png",
"images/coins/coin8@2x.png",
"images/coins/coin7@2x.png",
"images/coins/coin6@2x.png",
"images/coins/coin5@2x.png",
"images/coins/coin4@2x.png",
"images/coins/coin3@2x.png",
"images/coins/coin2@2x.png",
"images/coins/coin1@2x.png",
}
coinAnim.x = x
coinAnim.y = y
coinAnim.xScale = 0.5
coinAnim.yScale = 0.5
coinAnim:play()
coinAnim:setReferencePoint(display.CenterReferencePoint)
localGroup:insert(coinAnim)
return coinAnim
end
local function onLocalCollision( event )
local obj1 = event.obj1
local obj2 = event.obj2
if ( event.phase == "began") then
if (obj1.name == "player" and obj2.name == "coin 1" or obj1.name == "player" and obj2.name == "coin 2" then
myCoinsNew = myCoinsNew + myCoinsVar
coinsText.text = "x "..myCoinsNew
--Create a coin
local coinAnim = createCoin(obj2.x, obj2.y)
obj2.isBodyActive = false
obj2.isVisible = false
trans1 = transition.to( coinAnim, { time=1500, x=480, y=75, alpha = 0})
end
end
return true
end
Runtime:addEventListener("collision", onLocalCollision)
PS : Sorry about the formatting, the original linked code was very unformatted (in a readable sense
) [import]uid: 84637 topic_id: 13959 reply_id: 51428[/import]