I have an app that has an object that is dynamic and other objects that are static. The dynamic object is subject to gravity. When the dynamic object contacts a static object - if it remains still for any length of time it seems to get stuck to the static object.
Here is our code
–
– level1.lua
local storyboard = require( “storyboard” )
local scene = storyboard.newScene()
– include Corona’s “physics” library
local physics = require “physics”
physics.start(); physics.pause()
physics.setDrawMode( “hybrid” )
– forward declarations and other locals
local screenW, screenH, halfW = display.contentWidth, display.contentHeight, display.contentWidth*0.5
– BEGINNING OF YOUR IMPLEMENTATION
– NOTE: Code outside of listener functions (below) will only be executed once,
– unless storyboard.removeScene() is called.
function drawMyLine(x1,y1, x2,y2)
local myLine = display.newLine( x1,y1, x2,y2 )
myLine:setColor( 115, 0, 0 )
myLine.width = 5
lineShape = { 0,0 , 0,0 , x2-x1,y2-y1 , x2-x1,y2-y1 }
physics.addBody(myLine, {density=1.0, friction =.0, bounce = .3 , shape = lineShape})
myLine.bodyType =“static”
myLine.pieceType = “line”
end
function drawHole(x1,y1, s1)
local circle = display.newCircle( x1, y1, s1 ) – Green circle is
circle:setFillColor( 0, 0, 0 )
circle.pieceType = “circle”
physics.addBody(circle, {density=1.0, friction =.0, bounce = .3 })
circle.bodyType =“static”;
–circle.Width = 50 ??? How do you change circle diameter?
end
local function onTilt( event )
physics.setGravity( (10 * event.yGravity) * -1, (10 * event.xGravity) * -1 )
end
Runtime:addEventListener( “accelerometer”, onTilt )
function checkgrav()
gx, gy = physics.getGravity()
print(gx, gy)
physics.setGravity( 0, grav)
end
local function onCollision( event )
if ( event.phase == “began” ) then
for k,v in pairs(event) do print(k) end
print( "began: " … event.object1.pieceType … " " … event.object2.pieceType)
elseif ( event.phase == “ended” ) then
–print( "ended: " … event )
end
end
Runtime:addEventListener( “collision”, onCollision )
– Called when the scene’s view does not exist:
function scene:createScene( event )
local group = self.view
drawMyLine(1,1,480,1); – top border
drawMyLine(1,1,1,320); – left border
drawMyLine(480,1,480,320); – right border
drawMyLine(1,319,479,319); – bottom border
drawMyLine(40,40,40,279); – first line
drawMyLine(160,319,160,209);
drawMyLine(160,1,160,110);
drawMyLine(1,319,479,319);
drawMyLine(1,319,479,319);
drawMyLine(1,319,479,319);
drawMyLine(1,319,479,319);
drawHole(58,60,15);
drawHole(58,110,15);
drawHole(58,160,15);
drawHole(58,210,15);
drawHole(58,260,15);
–drawHole(58,180,15);
drawHole(142,40,15);
drawHole(142,90,15);
drawHole(142,230,15);
drawHole(142,280,15);
group:insert( background )
–Draw the marble once
myMarble = display.newCircle( 100, 100, 10 )
myMarble:setFillColor(211, 208, 208)
physics.addBody(myMarble, {density=2.0, friction =.0, bounce = .3 });
myMarble.pieceType = “marble”
myMarble.isBullet = true
end
– Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
physics.start()
end
– Called when scene is about to move offscreen:
function scene:exitScene( event )
local group = self.view
physics.stop()
end
– If scene’s view is removed, scene:destroyScene() will be called just prior to:
function scene:destroyScene( event )
local group = self.view
package.loaded[physics] = nil
physics = nil
end
– END OF YOUR IMPLEMENTATION
– “createScene” event is dispatched if scene’s view does not exist
scene:addEventListener( “createScene”, scene )
– “enterScene” event is dispatched whenever scene transition has finished
scene:addEventListener( “enterScene”, scene )
– “exitScene” event is dispatched whenever before next scene’s transition begins
scene:addEventListener( “exitScene”, scene )
– “destroyScene” event is dispatched before view is unloaded, which can be
– automatically unloaded in low memory situations, or explicitly via a call to
– storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( “destroyScene”, scene )
return scene [import]uid: 148663 topic_id: 27000 reply_id: 327000[/import]