【问题标题】:Auto-change the physics of an object after a change of his size改变大小后自动改变对象的物理特性
【发布时间】:2013-06-05 07:45:59
【问题描述】:

我是 Corona 和 Lua 的新手。我有以下问题:

我有一个对象cake 具有这些物理参数(并不重要):

["cake1"] = {




                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   -21, 62.5  ,  -36, 62.5  ,  -50, 55.5  ,  -58.5, 46  ,  -36, -38.5  ,  57, -40.5  ,  57.5, 34  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   -7.5, -63  ,  -13, -61.5  ,  -12, -64.5  ,  -8, -64.5  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   -12, -64.5  ,  -13, -61.5  ,  -17.5, -56  ,  -21, -52.5  ,  -18.5, -60  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   -47, -37.5  ,  -58.5, 46  ,  -58.5, -33  ,  -53, -37.5  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   -26, -52.5  ,  -21, -52.5  ,  -18.5, -52  ,  -9, -47.5  ,  -6.5, -41  ,  -36, -38.5  ,  -34.5, -46  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   -36, -38.5  ,  -58.5, 46  ,  -47, -37.5  ,  -42, -39.5  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   -6.5, -41  ,  -9, -47.5  ,  -6.5, -44  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   25, -40.5  ,  7, -40.5  ,  17, -42.5  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   48, -42.5  ,  57, -40.5  ,  25, -40.5  ,  32, -42.5  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   -18.5, -52  ,  -21, -52.5  ,  -17.5, -56  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   7, -40.5  ,  -36, -38.5  ,  -6.5, -41  }
                    }
                     ,
                    {
                    pe_fixture_id = "", density = 2, friction = 0, bounce = 0, 
                    filter = { categoryBits = 1, maskBits = 65535, groupIndex = 0 },
                    shape = {   25, -40.5  ,  -36, -38.5  ,  7, -40.5  }
                    }



        }

当我将它插入场景时,我得到以下结果:

cake 太大,所以我用cake1:scale(0.5,0.5) 来改变他的大小。问题是物理没有自动改变以适用于它的新大小,结果是:

是否有任何简单的方法可以更改对象的大小,并且物理会自动适应新的大小,或者我必须重写它们?

【问题讨论】:

  • 你可以在每个蛋糕上加上物理,所以当你调用每个蛋糕的大小时,物理会自动改变
  • @DevfaR 如果您打算使用编辑器更改对象的大小,比如说Photoshop 然后应用物理,那效率不高。我将有每个对象的 5-10 个 png 文件如果您的意思是使用 object.size 函数,我试过了,对象的大小没有改变。我真的不明白你的评论。
  • 抱歉误会,我没有注意到最后一张看起来像是在浮动的图像,您是否尝试将半径添加到物理中,例如physics.addBody(object {radius = 0.5})

标签: lua coronasdk


【解决方案1】:

您是否为此目的使用物理编辑器..?

然后提供scaleFactor。您可以使用此比例因子为对象分配物理,如下所示:

local scaleFactor = 1.0
local physicsData = (require "shapedefs").physicsData(scaleFactor)
local shape = display.newImage("objectname.png")
physics.addBody( shape, physicsData:get("objectname") )

而且当你改变 scaleFactor 时,物理区域的大小会自动改变。

更多详情,请访问:http://velluminteractive.com/advanced-physics-bodies-with-physics-editor-and-corona-sdk/

【讨论】:

    【解决方案2】:

    您已将比例更改为 0.5 小,这意味着您必须将所有物理对象更改为 0.5,使用计算器使您的正常数字 / 2 和小于 0 / 2 的数字将它们与结果数字相加,这里是一个例子:

    24 = 12

    -24 = -36

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 2022-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      相关资源
      最近更新 更多