【发布时间】:2020-12-01 14:10:19
【问题描述】:
这里对游戏开发和 Lua 非常陌生。我正在制作一个平台游戏,我希望能够在角色与某个物体发生碰撞后重新开始游戏,并在此之前显示一个标题。一旦发生这种情况,我也想将角色的位置重置回 0,0,但我不知道如何。
我创建了一个名为 WIN 的全局变量,如果角色与对象发生碰撞,则将其设置为 true,这有效,但随后进入我的 love.draw() 函数,我有这个:
function love.draw()
-- begin virtual resolution drawing
push:apply('start')
-- clear screen using Mario background blue
love.graphics.clear(108/255, 140/255, 255/255, 255/255)
-- renders our map object onto the screen
love.graphics.translate(math.floor(-map.camX + 0.5), math.floor(-map.camY + 0.5))
map:render()
if WIN == true then
love.graphics.printf('NEXT LEVEL', 0, 30, VIRTUAL_WIDTH, 'center')
love.graphics.printf('Continue to Next Level', 0, 45, VIRTUAL_WIDTH, 'center')
love.load()
end
-- end virtual resolution
push:apply('end')
结束 当我实际与对象发生碰撞时,出现以下错误:
Error
push.lua:48: love.window.setMode cannot be called while a Canvas is active in love.graphics.
Traceback
[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()
-- sets up a different, better-looking retro font as our default
love.graphics.setFont(love.graphics.newFont('fonts/font.ttf', 8))
-- sets up virtual screen resolution for an authentic retro feel
push:setupScreen(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, WINDOW_WIDTH, WINDOW_HEIGHT, {
fullscreen = false,
resizable = true
})
love.window.setTitle('Super Mario 50')
love.keyboard.keysPressed = {}
love.keyboard.keysReleased = {}
end
我猜问题是我已经做了一次之后无法再次设置屏幕,但我不知道如何解决这个问题并重新开始。任何帮助表示赞赏!
【问题讨论】: