【发布时间】:2011-10-17 15:21:49
【问题描述】:
我正在使用一个图形库,可以让你在 Lua 中编程。我需要 A* 寻路库,所以我在网上找到了一个。它只是 1 个执行路径查找的 lua 文件和 1 个示例文件。在示例文件中,它使用如下对象:
-- Loading the library
local Astar = require 'Astar'
Astar(map,1) -- Inits the library, sets the OBST_VALUE to 1
我运行脚本,一切正常。所以现在我将 Astar.lua 文件添加到我的图形引擎运行的路径位置并做同样的事情,我在 Astar(map, 1) 行上得到错误:
"尝试调用本地'AStar'(一个数值)
任何想法为什么我在做与此 AStar 库附带的示例相同的事情时会收到该错误?
这是 AStar 文件的一小部分
-- The Astar class
local Astar = {}
setmetatable(Astar, {__call = function(self,...) return self:init(...) end})
Astar.__index = Astar
-- Loads the map, sets the unwalkable value, inits pathfinding
function Astar:init(map,obstvalue)
self.map = map
self.OBST_VALUE = obstvalue or 1
self.cList = {}
self.oList = {}
self.initialNode = false
self.finalNode = false
self.currentNode = false
self.path = {}
self.mapSizeX = #self.map[1]
self.mapSizeY = #self.map
end
所以请注意,当我从我的图形引擎运行它时,它返回 1,但是当从它附带的示例运行它时,它返回一个表,这就是它应该返回的。所以不知道为什么它只会返回 1。
【问题讨论】:
-
我注意到在错误消息
"attempt to call local 'AStar' (a number value)"中,S 是大写的。这是您的拼写错误还是您在某处使用了错误的大小写?