All
Trying to figure out how I can set the correct path when to balls/circles collide
In the below example you can see that the two circles collides but the red circle will only reverse it path and not follow the natural collision path when to circles collides. Does anyone have a clue how to get this to work ?
[lua]local physics = require( “physics” )
physics.start()
physics.setGravity(0,9.8)
–collision
local function onLocalCollision( self, event )
if ( event.phase == “began” ) then
xdirection = xdirection * -1;
ydirection = ydirection * -1;
end
end
Bigcircle = display.newCircle(100, 100, 50)
Bigcircle:setFillColor(100,0,100)
physics.addBody(Bigcircle,{bounce=0.3,radius=Bigcircle.width/2})
local floor = display.newRect(0,display.contentHeight,display.contentWidth,1)
physics.addBody(floor,“static”,{bounce=0.5})
local lwall = display.newRect(0,0,1,display.contentHeight)
physics.addBody(lwall,“static”,{bounce=0.1})
local rwall = display.newRect(display.contentWidth,0,1,display.contentHeight)
physics.addBody(rwall,“static”,{bounce=0.1})
xdirection,ydirection = 1,1
local xpos,ypos = display.contentWidth*0.5,display.contentHeight*0.5
local circle = display.newCircle( xpos, ypos, 20 );
circle:setFillColor(255,0,0,255);
physics.addBody(circle,“static”,{radius=circle.width/2})
circle.collision = onLocalCollision
circle:addEventListener( “collision”,circle)
function animate(event)
xpos = xpos + ( 2.8 * xdirection );
ypos = ypos + ( 2.2 * ydirection );
if (xpos > display.contentWidth - 20 or xpos < 20) then
xdirection = xdirection * -1;
end
if (ypos > display.contentHeight - 20 or ypos < 20) then
ydirection = ydirection * -1;
end
circle:translate( xpos - circle.x, ypos - circle.y)
end
Runtime:addEventListener( “enterFrame”, animate );[/lua] [import]uid: 31201 topic_id: 6114 reply_id: 306114[/import]