当前位置: 首页 > 知识库问答 >
问题:

错误的参数#-1到'addbody'(代理预期,得到零)

储承
2023-03-14

我正在使用这段代码生成objects,但有时我会遇到这个错误(错误参数#-1到'addBody'(需要代理,得到零))知道为什么吗?

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 )  

共有2个答案

计光赫
2023-03-14

rockCheck的随机值为4或5时,在下行的rockChecknil

physics.addBody( rocks, "dynamic", {density=.1, bounce=0.1, friction=.2, shape= shape2 ,filter=playerCollisionFilter } ) 
荀嘉熙
2023-03-14

您忘记处理rockCheck为4或5的情况。加上这些,你就没事了。

或者,将ramdom调用从1改为5,并将6和7分别替换为4和5。

顺便说一下,真的要考虑编写<代码> ROCCHECK/<代码> A<代码>本地<代码>变量(用<代码>本地ROCCHECK =…<代码>)

 类似资料:
  • 以下是代码: 我不是一个有经验的“编剧”,所以我真的不知道如何解决这个问题。

  • 第二个抛出了一个错误(),声称当我直接在函数中输入字符串时,它没有字符串,这让我非常恼火。然而,这种错误并非总是发生——其他时候,它工作得很完美,似乎没有任何原因。其次,当我在上面说的语句中输入时,它现在认为错误与语句有关,例如: 在我的程序中,我有多个重复的代码示例,这些代码具有不同的变量/值,我已经多次验证它们都是相同的。 这可能是什么错误,为什么?

  • 问题内容: 我设置了以下for循环以接受5个测试分数。我希望循环提示用户输入5个不同的分数。现在,我可以通过输入“请输入您的下一个测试分数”来完成此操作,但是我希望每个输入的分数提示都提供其相关编号。 因此,对于第一个输入,我希望显示“请输入测试1的分数”,然后对于第二个分数,显示“请输入测试2的分数”。当我尝试运行此循环时,出现以下错误: 这是代码 问题答案: 一种简单(正确的方法)来编写所需内

  • 我有一个问题在这里我不知道如何解决这个问题,本尝试任何我知道解决这个仍然没有解决方案,请帮助 我有2个模块 主要的卢阿: 外部模块dog.lua: 堆栈回溯: 现在还在想在这里做什么。这是唯一阻碍我项目的事情。请帮忙,谢谢:)

  • 问题内容: 我当我执行以下节点的代码在控制台错误 错误: 我正在使用Angular Js,它的文件夹结构像下面这样 我在这里想念什么? 问题答案: 这段代码: 告诉Express,无论浏览器要求什么,您的服务器都应返回。因此,当浏览器请求诸如或的JavaScript文件时,您的服务器返回的内容(以开头),这会导致JavaScript错误。 回调中的代码应查看请求以确定要发回的文件,和/或您应使用带

  • 当尝试ViewChild时,我会得到错误。错误为“未提供'opts'的参数。” @ViewChild都给出了错误。 ts(11,2):错误TS2554:应为2个参数,但得到1。