从文件夹加载模块

时间:2018-10-06 19:14:58

标签: lua love2d

我的项目结构如下:

--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,然后在各种love2dlua库中进行搜索。

我尝试过类似require("./units/bullet")之类的事情,或将/替换为.,但到目前为止,还没有运气。

将这些文件从units文件夹中提取到根文件夹中即可。但是,可以从sprites文件夹加载图像(例如love.graphics.draw(sprites.background, 0, 0))。

有帮助吗?

2 个答案:

答案 0 :(得分:0)

我想到两件事。

  1. 确保将LUA_PATH设置为您的项目目录
  2. return Bulletreturn Player等添加到您创建的每个模块中

答案 1 :(得分:0)

我发现问题是,尽管我的main.lua拥有正确的require,但是我的update文件却没有。