local physics = require "physics"
physics.start()
physics.setGravity(0, 0)
local rock = display.newGroup(display.newCircle(0, 0, 30))
physics.addBody(rock, "kinematic", {radius = 30})
rock.x, rock.y = display.contentWidth, display.contentHeight * 0.25
rock:setLinearVelocity(-50, 15)
local function stick(event)
local self, other = event.target, event.other
self:removeEventListener('collision', stick)
timer.performWithDelay(0,
function()
physics.removeBody(self)
local x, y = self:localToContent(0, 0)
other:insert(self)
self.x, self.y = other:contentToLocal(x, y)
timer.performWithDelay(5000, function(...) if self and self.removeSelf then self:removeSelf() end end)
end
)
end
local function spawn()
local self = display.newCircle(display.contentCenterX, display.contentCenterY * 1.5, 6)
self:setFillColor(0xFF, 0x00, 0x00)
physics.addBody(self, 'dynamic', {radius = 5})
self:setLinearVelocity(0, -150)
self:addEventListener('collision', stick)
local function monitor()
local bounds = self and self.contentBounds
if not bounds or bounds.xMin > display.contentHeight or bounds.xMax < 0 or bounds.yMax < 0 or bounds.yMin > display.contentHeight then
if self and self.removeSelf then self:removeSelf() end
Runtime:removeEventListener('enterFrame', monitor)
end
end
Runtime:addEventListener('enterFrame', monitor)
end
timer.performWithDelay(500, spawn, 0)
Comments