在corona中,physics.addbody()无法在循环内工作。

我试图通过循环一次性添加多个矩形,以下是我的代码:

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

矩形成功添加了,但它们没有被视为刚体(例如其他刚体不会与它们碰撞)

代码有什么问题?

点赞
用户1369488
用户1369488

我认为是因为您一遍又一遍地添加相同的矩形到物理引擎中。尝试使用以下代码:

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

看看是否可行。

2012-08-05 22:29:26
用户932927
用户932927

可能有几个原因导致你的问题。请确认: a)方框确实没有被加入物理引擎中(通过启用带混合物理模式 physics.setDrawMode("hybrid") 可以确认)。也许方框是存在的,但你可能遇到了对象过滤器的问题(参见 http://developer.coronalabs.com/forum/2010/10/25/collision-filters-helper-chart ) b)rectangles.createRoundedRect(我假设它是你自己的函数)没有将创建的对象添加到与其他对象(如果有)不同的组中。在组之间创建的对象在 Corona 物理中不能很好地运作。

2012-08-07 19:12:35
用户529024
用户529024

我解决了这个问题。在移动物体时,我本应该使用object:setLinearVelocity()而不是object:translate()

2012-10-14 04:52:23