Here I am with an update:
I’ve somehow got it to work by combining the example I was given and added parts of it to the doTurn function. However, some parts I can’t even imagine how box2D/corona calculates because they’re just over-the-top-of-the-highest-roof-on-planet-earth-weird.
local dot local rect local circle, circleOriginal dot = display.newCircle(display.contentCenterX,175,5) dot:setFillColor(200,0,0) rect = display.newImage("img/rect.png") rect:setReferencePoint( display.BottomCenterReferencePoint ) rect.x = dot.x; rect.y = dot.y --Only way to really get them 'synced' in the circular movement around the 'dot' is to place the circle at dot.x+2, but it really should be dot.x circle = display.newCircle(dot.x+2,dot.y - 47.5,12.5) physics.addBody( circle, "static", { friction=0.3, radius=12.5, filter=objectCollisionFilter } ) local circleContentX, circleContentY = circle:localToContent( 0, 0 ) circle.rotation = 90 circle.x, circle.y = circleContentX, circleContentY doTurn = function(event) circleContentX, circleContentY = circle:localToContent( 0, 0 ) --Why 4.15?? circle.yReference = 4.15 circle.x, circle.y = circleContentX, circleContentY circle.rotation = circle.rotation + 5 rect.rotation = rect.rotation + 5 end
This code actually works, the circle with its physical body updates its new center point every frame with the movement. However I can’t really understand how the circle.yReference must be 4.15 (or a number very close to that) when it should actually be 47.5?
I need to be doing something very wrong somewhere
EDIT: after a while (several minutes) the circle comes ahead of the rect picture in rotation, more than the 2 pixels from dot.x + 2, probably the 4.15 reference being off somewhat