Невозможно объявить новую функцию в lua, компилятор говорит мне включить знак ‘=’ рядом с именем функции

#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 . Это все равно выйдет за рамки.