【问题标题】:How to scale custom shape physics body with physics editor如何使用物理编辑器缩放自定义形状物理体
【发布时间】:2013-06-25 11:07:08
【问题描述】:

我面临一个问题,即我有几个物理实体,它们的形状在物理编辑器中定义,我正在使用那个 .lua 文件作为形状。但我无法发现如何分别在 X 轴和 Y 轴上应用缩放? 有什么帮助吗?

【问题讨论】:

    标签: physics game-physics coronasdk


    【解决方案1】:

    如果您使用 Andreas Loew / code-and-web.de

    Physics Editor

    你可以试试这个代码

    这是实现

    local scaleX = 0.5
    local scaleY = 0.2
    local physicsData = (require ("your.physics.object")).physicsData(scaleX,scaleY) --This is the scaling of the physics body
    object = display.newImage("youimage.png")
    object.xScale = scaleX
    object.yScale = scaleY
    physics.addBody( object, "static", physicsData:get("physics_dody") )
    

    在物理编辑器 Lua(您的 .lua 形状)上,您必须更改以下代码

    function M.physicsData(scale)
    

    function M.physicsData(scaleX,scaleY)
    

    local s = scale or 1.0
    for bi,body in pairs(physics.data) do
        for fi,fixture in ipairs(body) do
            if(fixture.shape) then
                for ci,coordinate in ipairs(fixture.shape) do
                    fixture.shape[ci] = s * coordinate
                end
            else
                fixture.radius = s * fixture.radius
            end
        end
    end
    

    local sX = scaleX or 1.0
    local sY = scaleY or 1.0
    for bi,body in pairs(physics.data) do
        for fi,fixture in ipairs(body) do
            if(fixture.shape) then
                for ci,coordinate in ipairs(fixture.shape) do
                    if (ci%2) == 0 then
                        fixture.shape[ci] = sX * coordinate
                    else
                        fixture.shape[ci] = sY * coordinate
                    end
                end
            else
                fixture.radius = sX * fixture.radius
            end
        end
    end
    

    【讨论】:

    • 感谢您的回复,但是是统一缩放,如果我想在X和Y上应用不同的缩放因子怎么办?例如:xScale = 1 和 yScale = 1.2
    • 我编辑了我的整个答案,你现在可以使用它了。我希望这会有所帮助
    • 非常感谢,我刚刚反转了 sX 和 sY 现在它完美了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多