This should do what you’re looking for. Looks like your dragging code needs some work though.
[lua]require “physics”
physics.start()
physics.setDrawMode( “hybrid” )
local attachJoint = {}
local onCollision
local doCollision
local collider
local cSelf
local groundFilter = { categoryBits=1, maskBits=2 }
local objectFilter = { categoryBits=2, maskBits=3 }
local joFilter = { categoryBits=4, maskBits=4 }
function onCollision( self, event )
collider = event.other
cSelf = self
local collisionTimer = timer.performWithDelay( 1, doCollision, 1)
end
function doCollision()
collider.x, collider.y = cSelf.x, cSelf.y
attachJoint[#attachJoint + 1] = physics.newJoint( “pivot”, cSelf, collider, cSelf.x, cSelf.y )
collider:removeEventListener( “collision”, collider )
cSelf:removeEventListener( “cSelf”, cSelf )
end
local ground = display.newRect( 0, 320, display.contentWidth, 100 )
physics.addBody( ground, “static”, { friction=0.5, bounce=0.3, filter=groundFilter } )
local object1 = display.newRect( 100, 100, 10, 40 )
physics.addBody( object1, “dynamic”, { friction=0.5, bounce=0.3, filter=objectFilter } )
local jointObject1 = display.newCircle( object1.x, (object1.y - 20), 10 )
physics.addBody( jointObject1, “dynamic”, { friction=0.5, bounce=0.3, filter=joFilter } )
joJoint1 = physics.newJoint( “weld”, jointObject1, object1, object1.x, (object1.y - 20) )
jointObject1.collision = onCollision
jointObject1:addEventListener( “collision”, jointObject1 )
local object2 = display.newRect( 300, 100, 10, 40 )
physics.addBody( object2, “dynamic”, { friction=0.5, bounce=0.3, filter=objectFilter } )
local jointObject2 = display.newCircle( object2.x, (object2.y - 20), 10 )
physics.addBody( jointObject2, “dynamic”, { friction=0.5, bounce=0.3, filter=joFilter } )
joJoint2 = physics.newJoint( “weld”, jointObject2, object2, object2.x, (object2.y - 20) )
jointObject2.collision = onCollision
jointObject2:addEventListener( “collision”, jointObject2 )
group1 = display.newGroup()
group1:insert(ground)
group1:insert(object1)
group1:insert(object2)
eventoffset = {x=0,y=0}
---------------- drag function
local function dragging (event)
local stage = display.getCurrentStage()
local target = event.target
if event.phase == “began” then – on touch
stage:setFocus(target, event.id)
eventoffset.x = event.x - target.x
eventoffset.y = event.y - target.y
group1:insert(target)
end
if event.phase == “moved” then – on move
target.x = event.x - eventoffset.x
target.y = event.y - eventoffset.y
end
if event.phase == “ended” or event.phase == “cancelled” then – on release
stage:setFocus(nil)
end
end
ground:addEventListener(“touch”, dragging)
object1:addEventListener(“touch”, dragging)
object2:addEventListener(“touch”, dragging)[/lua] [import]uid: 27119 topic_id: 13220 reply_id: 49150[/import]