为什么我们要制作一个单独的函数来检测其他 类 的输入
Why do we make a separate function for detecting input for other classes
这是来自 CS50 关于游戏开发的讲座。
我们已经有一个 table 来检测 main.lua
中的输入(即 love.keyboard.keysPressed
):
function love.keypressed(key)
-- add to our table of keys pressed this frame
love.keyboard.keysPressed[key] = true
if key == 'escape' then
love.event.quit()
end
end
但我们仍然在main.lua
中制作了另一个函数用于其他类:
function love.keyboard.wasPressed(key)
return love.keyboard.keysPressed[key]
end
用法示例(Class 名称:bird.lua
):
-- just sample code, ignore the functionality
if love.keyboard.wasPressed('space') or love.mouse.wasPressed(1) then
self.dy = -5
sounds['jump']:play()
end
可以找到整个游戏的代码here
感谢你们花时间阅读这个问题
编辑:据我了解,
函数love.keypressed(key)
没有return任何东西,tablelove.keyboard.keysPressed[key]
在main.lua
更新后重置,所以我们调用一个函数直接执行在那个特定时间检查任何输入(即love.keyboard.wasPressed
)
哈,我刚刚在搜索同样的问题时遇到了这个问题。我认为是这样的鸟 class 处理它自己的密钥 detection/movement.
由于 love.keyboard.keypressed
是一个全局函数,它会一直执行,你必须检查你处于什么状态 in/handle 鸟在 [=17= 中的移动] - 这样(将 waspressed 作为函数传递),bird class 保持与其关联的代码,而 main 保持更高级别的非特定代码
这是来自 CS50 关于游戏开发的讲座。
我们已经有一个 table 来检测 main.lua
中的输入(即 love.keyboard.keysPressed
):
function love.keypressed(key)
-- add to our table of keys pressed this frame
love.keyboard.keysPressed[key] = true
if key == 'escape' then
love.event.quit()
end
end
但我们仍然在main.lua
中制作了另一个函数用于其他类:
function love.keyboard.wasPressed(key)
return love.keyboard.keysPressed[key]
end
用法示例(Class 名称:bird.lua
):
-- just sample code, ignore the functionality
if love.keyboard.wasPressed('space') or love.mouse.wasPressed(1) then
self.dy = -5
sounds['jump']:play()
end
可以找到整个游戏的代码here
感谢你们花时间阅读这个问题
编辑:据我了解,
函数love.keypressed(key)
没有return任何东西,tablelove.keyboard.keysPressed[key]
在main.lua
更新后重置,所以我们调用一个函数直接执行在那个特定时间检查任何输入(即love.keyboard.wasPressed
)
哈,我刚刚在搜索同样的问题时遇到了这个问题。我认为是这样的鸟 class 处理它自己的密钥 detection/movement.
由于 love.keyboard.keypressed
是一个全局函数,它会一直执行,你必须检查你处于什么状态 in/handle 鸟在 [=17= 中的移动] - 这样(将 waspressed 作为函数传递),bird class 保持与其关联的代码,而 main 保持更高级别的非特定代码