在尝试调用不同的Lua文件中的函数时出现错误(该函数是nil值)。
2014-3-9 20:45:36
收藏:0
阅读:117
评论:1
当我尝试调用一个盒碰撞器对象中的函数时,我会得到以下错误:
错误信息:
main.lua:26: attempt to call field 'Update' (a nil value)
追踪记录:
main.lua:26: in function 'update' [C]: in function 'xpcall'
代码如下:
main.lua
require("BoxCollider")
local s1 = {}
s1.x = 10
s1.y = 10
s1.w = 10
s1.h = 10
s1.collider = BoxCollider.new(s1.x,s1.y,s1.w,s1.h)
test = BoxCollider.new(40, 7,15,15)
function love.load()
end
function love.update(dt)
if love.keyboard.isDown("d") then s1.x = s1.x + 100 * dt end
---[[
s1.collider:Update(s1.x,s1.y)
if s1.collider:CheckCollisions(test) then
s1.x = 10
end
--]]
end
function love.draw()
love.graphics.rectangle("fill", s1.x, s1.y, s1.w, s1.h)
love.graphics.rectangle("fill", 40, 7, 15,15)
end
BoxCollider.lua
BoxCollider = {}
BoxCollider._index = BoxCollider
--x是碰撞器的x点,如果盒子是用于对象,则应等于对象的x点
--y是碰撞器的y点,如果盒子是用于对象,则应等于对象的y点
--w是盒子的宽度
--h是盒子的高度
function BoxCollider.new(x,y,w,h)
return setmetatable({x = x or 0, y = y or 0, w = w or 0, h = h or 0},BoxCollider)
end
function BoxCollider:CheckCollisions( v )
return self.x < (v.x + v.h) and v.x < (self.x + self.w) and self.y < (v.y+v.h) and v.y < (self.y+self.h)
end
function BoxCollider:reSize(nw,nh)
self.w = nw
self.h = nh
end
function BoxCollider:Update(nx,ny)
self.x = nx
self.y = ny
end
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我认为您在 BoxCollider.__index 中只忘了一个下划线。 只有一个下划线时,当调用:Update时不会搜索 BoxCollider 方法,因此会找不到它。