我目前正在为学校项目编写游戏,这是一种《太空侵略者》类型的游戏。我目前正在尝试制作一个屏幕,上面写着“按R重新启动”,以便当玩家按R时游戏可以重新开始。像在C#示例中一样:开始:(所有代码)转到开始。所以我的问题是否与此等效?我在互联网上找不到有关此事的信息。
我已经尝试过return循环,但是它甚至在开始之前就使游戏崩溃。我看到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键时,我希望游戏重新启动,但是它崩溃或什么也不做。
答案 0 :(得分:3)
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