0

長方形がここで回転しない理由を誰かが説明できますか?これはLuaコードで、CoronaSDKを使用しています。

つまり、重心が中心から外れた長方形を設定し、重心がずれているときに回転することを期待して、中央に力を加えようとしました。

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位置です。 " 変数)。

不均衡な物理オブジェクトを実行するには、形状を使用して実行する必要があるため、2つの形状を作成する必要があります(したがって、自動形状を使用できないため、ポリゴンを使用する必要があります)。中心から外れた質量をシミュレートします。

たとえば、長さが100単位の長方形で、50単位の重み1を作成し、他の50単位の重み2を作成すると、中心はx 75程度になります(私の計算はここで間違っている可能性があります)。

于 2012-08-21T22:07:13.547 に答える