尝试在Lua中重置游戏
2020-8-11 20:47:58
收藏:0
阅读:92
评论:2
我在游戏开发和Lua方面非常新手。我正在制作一个平台游戏,并且希望能够在角色与某个对象发生碰撞时重新启动游戏,并在此之前显示一个标题。我还希望一旦发生这种情况,将角色的位置重置回0, 0,但我不知道如何实现。
我创建了一个名为WIN的全局变量,如果角色与对象发生碰撞,则该变量设为true,这很有效,但是进入我的love.draw()函数时,我有以下代码:
function love.draw()
-- 开始虚拟分辨率绘画
push:apply('start')
-- 使用Mario背景蓝色清除屏幕
love.graphics.clear(108/255,140/255,255/255,255/255)
-- 在屏幕上呈现我们的地图对象
love.graphics.translate(math.floor(-map.camX + 0.5),math.floor(-map.camY + 0.5))
map:render()
if WIN == true then
love.graphics.printf('下一关',0,30,VIRTUAL_WIDTH,'center')
love.graphics.printf('继续下一关',0,45,VIRTUAL_WIDTH,'center')
love.load()
end
-- 结束虚拟分辨率
push:apply('end')
当我实际与对象发生碰撞时,我会得到以下错误:
错误
push.lua:48:在love.graphics中使用Canvas时无法调用love.window.setMode。
追溯
[C]: in function 'windowUpdateMode'
push.lua:48: in function 'setupScreen'
main.lua:43: in function 'load'
main.lua:116: in function 'draw'
[C]: in function 'xpcall'
错误行在我的love.load()函数中,如下所示:
function love.load()
-- 设置不同,外观更好的复古字体作为我们的默认值
love.graphics.setFont(love.graphics.newFont('fonts/font.ttf', 8))
-- 为实现真正的复古感觉,设置虚拟屏幕分辨率
push:setupScreen(VIRTUAL_WIDTH,VIRTUAL_HEIGHT,WINDOW_WIDTH,WINDOW_HEIGHT,{
fullscreen = false,
resizable = true
})
love.window.setTitle('超级马里奥50')
love.keyboard.keysPressed = {}
love.keyboard.keysReleased = {}
end
我猜问题是我不能在已经执行一次屏幕设置后再次设置屏幕,但我不知道如何解决并重新开始。任何帮助都将不胜感激!
点赞
用户11740758
使用以下命令来重新启动/重置游戏而不需要重新加载可执行文件:
love.event.quit('restart')
但在执行此操作之前,请在屏幕上创建一个黑色画面,并附上红色掉落的字母: GAME OVER
2020-08-18 12:03:06
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

love.load()只会运行一次。这一次是在游戏启动时。不要在love.draw()中调用love.load()(或者反过来)。Love2D 游戏引擎会调用这些函数,因此你不需要自己调用。在
love.update()中更新起始位置而不是在love.draw()中。love.draw()只用来绘制东西。我认为这在model-view-controller架构中是视图(View)。要重新开始对象的位置,你需要像这样写:
if WIN == true then push.x = push.start.x push.y = push.start.y map.camX = map.start.camX map.camY = map.start.camY end或者类似的代码,不知道你的变量长什么样,很难说。然后在
love.draw()中画出它们所在的坐标。