0

有人可以解释为什么矩形在这里不旋转吗?这是 Lua 代码,我正在使用 Corona SDK。

也就是说,我试图建立一个质心偏离中心的矩形,然后在中间对它施加一个力,期望它在质心偏离时旋转......

display.setStatusBar( display.HiddenStatusBar )

-- Setup
local screenCenterX, screenCenterY =  display.contentWidth/2, display.contentHeight/2

-- Create Object
local myRect = display.newRect(0, 0, 30, 90)
myRect.strokeWidth = 2
myRect:setFillColor(140, 140, 140, 0)
myRect:setStrokeColor(180, 180, 180)
myRect:setReferencePoint(display.CenterReferencePoint)
myRect.x, myRect.y = screenCenterX, screenCenterY

-- Apply Physics
local physics = require("physics")
physics.start()
physics.setGravity(0,0)
physics.addBody( myRect, "kinimatic", { friction=0.5, bounce=0.1, radius = 45 } )

-- Redefine Centre of Mass (what I'm trying to get right)
myRect.xOrigin, myRect.yOrigin = screenCenterX, screenCenterY - 100

-- Replace myRect to the center as setting the xOrigin/yOrigin seems to have moved it
myRect.x, myRect.y = screenCenterX, screenCenterY

-- Apply Force
timer.performWithDelay(3000,
        function(event)
                myRect:applyForce(5,0,  screenCenterX, screenCenterY)
                -- WHY DOES THIS NOT SPIN THE OBJECT???
                -- Centre of gravity has been change so shouldn't it rotate now?   
                -- That is, trying to simulate applying a force to an object who's centre of mass is NOT in 
                -- the center, and then see it spin.
        end
)
4

1 回答 1

1

变量 xOrigin 和 yOrigin 仅用于移动对象,这些变量根本不会影响物理,它们并不是真正的“原点”(它们是对象相对于父对象“x/yOrigin”的 x/y 位置“ 多变的)。

要做一个不平衡的物理对象,你需要用形状来做,所以你必须创建两个形状(因此你不能使用自动形状,你必须使用多边形),其中一个比另一个重模拟偏心质量。

例如,一个长度为 100 个单位的矩形,您将 50 个单位的重量设为 1,其他 50 个单位的重量设为 2,结果将是中心或多或少位于 x 75 处(我的数学在这里可能是错误的)。

于 2012-08-21T22:07:13.547 回答