Загрузка модулей из папок - PullRequest
0 голосов
/ 06 октября 2018

Структура моего проекта следующая:

--Shooter
----sprites
------background.png
------player.png
------zombie.png
----units
------player.lua
------zombie.lua
----main.lua
----load.lua
----update.lua
----draw.lua

А у моего main.lua будет следующее:

local Bullet = require("units.bullet")
local Player = require("units.player")
local Zombie = require("units.zombie")

require("load")
require("update")
require("draw")
require("functions")

love.window.setTitle("Shooter")

function love.load()
    Load()
end

function love.update(dt)
    Update(dt)
end

function love.draw()
    Draw()
end

Например, bullet.lua:

local Bullet =  {}
bulletSprite = love.graphics.newImage('sprites/bullet.png')

function Bullet.create()
    local newBullet = {
        pos = {},
        speed = 10,
        sprite = bulletSprite,
        direction = 0,
        dead = false
    }
    return setmetatable(newBullet, {__index = Bullet})
end

function Bullet:setPos(x, y)
    self.pos.x = x
    self.pos.y = y
end

function Bullet:setDirection(angle)
    self.direction = angle
end

function Bullet:move(dt)
    local distance = self.speed * dt * 60  
    self.pos.x = self.pos.x + math.cos(self.direction) * distance
    self.pos.y = self.pos.y + math.sin(self.direction) * distance
end


function spawnBullet(bullets, player)
    local newBullet = Bullet.create()
    newBullet:setPos(player.pos.x, player.pos.y)
    newBullet.direction = player.angle

    table.insert(bullets, newBullet)
end

Проблема в том, что ни один из файлов в папке units не будет загружен должным образом.Из журнала ошибок я вижу, что он пытается найти bullet.lua в корневом каталоге, а затем различные библиотеки love2d и lua.

Я пробовал разные вещи, такие как require("./units/bullet") или замену / с ., но пока безуспешно.

Извлечение этих файлов из папки units в корневую папку будет работать.Однако загрузка изображений из папки sprites работает (например, love.graphics.draw(sprites.background, 0, 0)).

Любая помощь?

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Я обнаружил, что проблема была в том, что, хотя мои main.lua имели правильные require s, мой update файл не имел.

0 голосов
/ 07 октября 2018

На ум приходят две вещи.

  1. Убедитесь, что LUA_PATH установлен в директорию вашего проекта
  2. , добавьте return Bullet, return Player и так далее ... в каждый модульвы создали
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...