我正在研究管理2D矢量的方法,到目前为止它还是相当不错的。我有一个模块文件,我正在调用Positions.lua,其中包含Vector2.new(X,Y)的信息
我以前从未真正使用过Metamethods,所以这是一次学习经历。我想轻松地将两个Vector2放在一起。这是我的Metamethod功能:
local vectorMethods = {
_add = function(lhs,rhs)
return Positions.Vector2.new(lhs.x+rhs.x,lhs.y+rhs.y);
end
};
我已经创建了这个阅读关于metamethods的Lua-users wiki页面。基于我所看到的,如果我使用setmetamethod将我的Vector2表链接到元方法,这应该可行。
Positions = require("Positions");
X = Positions.Vector2.new(154.1,353.3);
Y = Positions.Vector2.new(5,5);
s,m = pcall(function() J = X+Y end);
if not s then
print("Failed due to error: "..m);
end
这是我收到的输出:
由于错误而失败:main.lua:12:尝试执行算术运算 全局'X'(表值)
关于我可能做错的任何想法?我很抱歉没有显示整个代码,我觉得发帖太多了。
对不起,这篇文章组织得很糟糕。我不会在论坛上发帖很多。
感谢您提供给我的任何帮助!
答案 0 :(得分:2)
事实证明问题来自于我在_add中使用单个_而不是使用__add。
有时我很傻。 感谢阅读,至少!