#lua #love2d
#lua #love2d
Вопрос:
Итак, у меня есть этот файл Util.lua, в котором я создаю все функции, которые будут использоваться во всех состояниях моей игры.
Вот на что похож мой Util-файл
function GenerateQuads(atlas, tilewidth, tileheight)
local sheetWidth = atlas:getWidth() / tilewidth
local sheetHeight = atlas:getHeight() / tileheight
local sheetCounter = 1
local spritesheet = {}
for y = 0, sheetHeight - 1 do
for x = 0, sheetWidth - 1 do
spritesheet[sheetCounter] =
love.graphics.newQuad(x * tilewidth, y * tileheight, tilewidth,
tileheight, atlas:getDimensions())
sheetCounter = sheetCounter 1
end
end
return spritesheet
end
function table.slice(tbl, first, last, step)
local sliced = {}
for i = first or 1, last or #tbl, step or 1 do
sliced[#sliced 1] = tbl[i]
end
return sliced
end
funtion GenerateQuadsPowerups()
local counter = 1
local quads = {}
return counter
end
обратите внимание, что последняя функция вообще не работала, поэтому я просто вернул счетчик для тестирования, приведенное сообщение об ошибке :
‘=’ ожидается рядом с ‘GenerateQuadsPowerups’
«Powerup» — это класс, который я объявил с помощью библиотеки class.lua. Когда я удалил проблемную функцию из Util.lua, та же ошибка была выдана для первой функции, которую я создал в файле Powerup.lua.
Вот класс на случай, если он необходим для ссылки
Powerup = Class{}
funtion Powerup:init()
self.x = VIRTUAL_WIDTH
self.y = VIRTUAL_HEIGHT
self.dx = 0
self.dy = -10
end
-- we only need to check collision with the paddle as only that collisionis relevant to this class
function Powerup:collides()
if self.x > paddle.x or paddle.x > self.x then
return false
end
if self.y > paddle.y or self.y > paddle.y then
return false
end
return true
end
funtion Powerup:update(dt)
self.y = self.y self.dy * dt
if self.y <= 0 then
gSounds['wall-hit']:play()
self = nil
end
end
Я не могу понять, что здесь происходит
Комментарии:
1. в вашем коде как минимум три опечатки. это
function
неfuntion
так. Используйте текстовый редактор с выделением ключевых слов и будьте внимательнее при вводе!
Ответ №1:
Опечатка 1
функция GenerateQuadsPowerups()
Опечатка 2
включение функции: init()
Опечатка 3
включение функции: обновление (dt)
self = nil
кстати, ничего не получается. Я предполагаю, что вы думали, что могли бы каким-то образом уничтожить свое включение таким образом, но он будет присваивать только nil self
, который является просто локальной переменной Powerup:update
. Это все равно выйдет за рамки.