What are your bounce values set to?
Try this code and play with difference bounce values:
local physics = require("physics") physics.start() physics.setGravity(0,9.8) local function good() local floor = display.newRect( 100, 300, 120, 20 ) local ball1 = display.newCircle( 70, 100, 10 ) ball1:setFillColor(1,1,0) local ball2 = display.newCircle( 130, 275, 10 ) ball2:setFillColor(0,1,0) physics.addBody( floor, "static", { bounce = 0 } ) physics.addBody( ball1, "dynamic", { radius = 10, bounce = 0.9 } ) physics.addBody( ball2, "dynamic", { radius = 10, bounce = 0.9 }) end local function bad() local floor = display.newRect( 340, 300, 120, 20 ) local ball1 = display.newCircle( 310, 100, 10 ) ball1:setFillColor(1,0,1) local ball2 = display.newCircle( 370, 275, 10 ) ball2:setFillColor(0,1,1) physics.addBody( floor, "static", { bounce = 1 } ) physics.addBody( ball1, "dynamic", { radius = 10, bounce = 1 } ) physics.addBody( ball2, "dynamic", { radius = 10, bounce = 1 }) end good() bad()