无效的参数 #-1 传递给 'addBody' 函数 (应传递代理对象,但传递了 nil)。

我正在使用这段代码来生成对象,但有时会出现这个错误(Bad argument #-1 to 'addBody' (Proxy expected, got nil)),你有什么想法吗?

local numberRock = 1

local function clearRock( thisRock )
   display.remove( thisRock ) ; thisRock = nil
end

local function spawnRocks()
    rockChek = math.random(1, 7)
    if  rockChek == 1 then
        rocks = display.newImageRect("rockes/rock1.png",110 ,86 )
    elseif  rockChek == 2 then
        rocks = display.newImageRect("rockes/rock2.png",97 ,65 )
    elseif  rockChek == 3 then
        rocks = display.newImageRect("rockes/rock3.png",101 ,61 )
    elseif  rockChek == 6 then
        rocks = display.newImageRect("rockes/rock4.png",95 ,59 )
    elseif  rockChek == 7 then
        rocks = display.newImageRect("rockes/rock5.png",107 ,77 )
    end
    for i=1,numberRock do
        rocks.x = math.random(-10, 400);
        rocks.y =display.contentHeight + 100;
        transition.to( rocks, { time=2000,  y= display.contentHeight - display.contentHeight - 100 , onComplete=clearRock  } );
        physics.addBody( rocks, "dynamic", {density=.1, bounce=0.1, friction=.2, shape= shape2 ,filter=playerCollisionFilter } )
        rocks.name = "rocks"
        rocks.isSensor = true
        rocks.rotation =  math.random(100, 1800)
   end
end
Rockspawner1 = timer.performWithDelay( 1500, spawnRocks, 0 )
点赞
用户312586
用户312586

你忘记处理 rockCheck 等于 4 或者 5 的情况了。添加这些情况,就没问题了。

另外,考虑将 rockCheck 定义为 local 变量(使用 local rockCheck = ...)。

或者,让随机调用从 1 到 5,将 6 和 7 替换为 4 和 5。

2014-10-13 16:34:09
用户663848
用户663848

rockCheck 的随机值为 4 或 5 时,在下面的代码行中 rocksnil

physics.addBody( rocks, "dynamic", {density=.1, bounce=0.1, friction=.2, shape= shape2 ,filter=playerCollisionFilter } )
2014-10-13 17:02:16