【发布时间】:2021-07-22 04:07:24
【问题描述】:
我目前正在尝试制作一个飞扬的鸟副本,但在尝试在管道中生成时遇到了问题(当管道应该生成时,我收到以下错误:“bad argument #2 to 'draw'(Quad 预期,得到无)”)。
导致问题的函数如下(它们位于三个不同的类中):
Pipe = Class{}
local PIPE_IMAGE = love.graphics.newImage('FlappyBirdPipe.png')
PIPE_SCROLL = -60
PIPE_WIDTH = 20
PIPE_HEIGHT = 160
function Pipe:init(orientation, y)
self.x = VIRTUAL_WIDTH
self.y = y
self.width = PIPE_IMAGE:getWidth()
self.height = PIPE_HEIGHT
self.orientation = orientation
end
function Pipe:render()
love.graphics.draw(PIPE_IMAGE, self.x,
(self.orientation == 'top' and self.y + PIPE_HEIGHT or self.y),
0, 1, (self.orientation == 'top' and -1 or 1))
end
function PipePair:update(dt)
if self.x > -PIPE_WIDTH then
self.x = self.x - PIPE_SCROLL * dt
self.pipes['lower'].x = self.X
self.pipes['upper'].x = self.x
else
self.remove = true
end
end
如果有任何不清楚的地方或我遗漏了一些重要信息,我很乐意提供更多信息(我是 Stack Overflow 的新手,所以我不确定这里的一切是如何运作的)。
(我在vscode中使用love2d 11.3版)
编辑:我指出了我如何从 PipePair 类的更新函数更新 Pipe 类中的 self.x 的错误。不知何故,对 self.x 的这种改变似乎使它为零。
【问题讨论】:
-
你有没有试过在调用它之前打印你传递给draw的args,这些args在打印时会显示什么?也没有关于如何定义
pipe的信息,这将很难回答。请分享您使用的love2d的版本。 -
我现在已经添加了我正在使用的版本和完整的 Pipe 类。 (注意 Pipe 和 PipePair 是两个不同的类)
-
我尝试打印 self.x 和 self.y,似乎 self.y 已定义,但 self.x 为零。我还尝试将 self.x 设置为整数而不是 VIRTUAL_WIDTH 仍然导致错误。
-
您能否显示您调用
Pipe:init的位置,目前尚不清楚您的pipes 是如何创建的您显示的init函数仅作用于现有管道(或管道类作为一个整体)它不会创建新的pipe。我还建议创建一个minimal reproducible example,这可能会帮助您自行找到问题的原因,它还可以消除在 cmets 中来回进行此操作的需要。