【问题标题】:physics.addbody() does not work inside a loop in coronaphysics.addbody() 在电晕的循环中不起作用
【发布时间】:2012-08-03 14:15:47
【问题描述】:

我正在尝试通过循环一次添加多个矩形,这是我的代码:

for i=1,7,1 do
   rec = rectangles.createRoundedRect(left, top, 100, 18, 6)
  physics.addBody(rec , "static", { density = 1.0, friction = 0.0, bounce = 0.2 } )
  left = left + 50
  top = top - 35
end

矩形添加成功,但它们不被视为实体(即其他实体不与它们碰撞)

代码有什么问题?

【问题讨论】:

    标签: lua coronasdk game-physics


    【解决方案1】:

    (我认为)这是因为您不断地向物理引擎添加相同的记录。试试这个:

    rec = {}
    for i=1,7,1 do
     rec[i] = rectangles.createRoundedRect(left, top, 100, 18, 6)
     physics.addBody(rec[i] , "static", { density = 1.0, friction = 0.0, bounce = 0.2 } )
     left = left + 50
     top = top - 35
    end
    

    然后看看它是否有效。

    【讨论】:

      【解决方案2】:

      您的问题可能有多种原因。验证 a) 框确实没有添加到物理引擎中(通过使用physics.setDrawMode("hybrid") 启用混合物理模式)。可能是这些框在那里,但您的对象过滤器有问题(请参阅http://developer.coronalabs.com/forum/2010/10/25/collision-filters-helper-chart) b) rectangles.createRoundedRect (我认为这是您自己的函数)没有将创建的对象添加到与其他对象(如果有)不同的组中。电晕物理在跨组创建的对象中不能很好地发挥作用。

      【讨论】:

        【解决方案3】:

        我解决了问题 我使用object:translate() 来移动对象,而我想使用object:setLinearVelocity()

        【讨论】:

          猜你喜欢
          • 2015-12-23
          • 1970-01-01
          • 1970-01-01
          • 2015-11-16
          • 1970-01-01
          • 1970-01-01
          • 2018-06-12
          • 2018-06-20
          • 1970-01-01
          相关资源
          最近更新 更多