我正在为一个学校项目编写游戏,这是一种Space Invader类型的游戏。我正在尝试制作一个屏幕,上面写着“按R重新启动”,这样当玩家按下R时游戏就会重新开始。就像在C#例程中一样:开始:(所有代码)转到开始。所以我的问题是相同的吗?我在互联网上找不到相关的东西。
我已经尝试过返回循环但它在游戏开始之前就崩溃了。我看到Lua实际上在5.2版本中有一个goto循环。但是Love2D只支持Lua 5.1,所以现在我尝试重复......直到(条件)但它仍然不起作用
repeat
score = 0
enemykills = 0
local start = love.timer.step( )
love.graphics.setColor(255, 255, 255)
for _,b in pairs(player.bullets) do
love.graphics.rectangle("fill", b.x, b.y, 2, 2)
end
end
until not love.keyboard.isDown("r")
当我按下R时我希望游戏重启,但它要么崩溃要么什么都不做。
Love2D会反复调用你的love.update
和love.draw
函数。你不需要这样的循环。您需要做的是记住您的游戏处于“等待用户按'r'重启”状态。所以你的代码看起来像这样:
local current_state = "normal"
function love.update(dt)
if(current_state == "wait") then
if(love.keyboard.isDown("r")) then
current_state == "normal"
end
else
--[[Do normal processing]]
end
end