【发布时间】:2011-04-16 20:57:46
【问题描述】:
是否可以让用户在 lua 上按下按键? 费。
while true do
if keyPress(27)==true then
print("You just pressed ESC")
end
end
【问题讨论】:
是否可以让用户在 lua 上按下按键? 费。
while true do
if keyPress(27)==true then
print("You just pressed ESC")
end
end
【问题讨论】:
Lua 以极高的可移植性为前提。因此,它本质上是基于仅提供 ANSI C 中可用的功能。 (我认为唯一的例外是动态链接,它是一种非 ANSI 功能,并非在所有平台上都可用,但非常有用,以至于他们已经将它用于许多平台。)
ANSI C 不提供按键功能,因此默认 Lua 库也不提供。
话虽如此,LuaRocks 存储库可能会将您带到具有此功能的库。例如,可以在 LuaRocks 页面上找到的 ltermbox 具有您需要的功能。 (请注意,您可能必须删除您不想要的部分。)可能还有其他可用的库。去挖吧。
否则,Lua 的整个点 就是可扩展性。它是一种可扩展的扩展语言。 hand-roll your own extension 提供您想要的功能实际上并不难。
【讨论】:
NTLua 项目中有一个与 getkey() 的绑定。您可以从那里获得一些资源。
(它只是包装了 getch())
【讨论】:
您似乎正在尝试制作游戏。对于 2D 游戏,您可能需要考虑 love2d。它看起来有点奇怪,但它可以工作,并且与其他语言(如 C)相比,它相对容易。
【讨论】:
Lua 没有现货。可能还有一个额外的库。
【讨论】:
第一件事是第一件事:如果您使用我的方法来执行此操作,则需要将您使用的脚本放在 LocalScript 中。不这样做会导致键不显示在控制台中(F9 查看控制台)。
好的,现在我们知道它在 LocalScript 中,下面是脚本:
local player = game.Players.LocalPlayer -- Gets the LocalPlayer
local mouse = player:GetMouse() -- Gets the player's mouse
mouse.KeyDown:connect(function(key) -- Gets mouse, then gets the keyboard
if key:lower() == "e" or key:upper() == "E" then -- Checks for selected key (key:lower = lowercase keys, key:upper = uppercase keys)
print('You pressed e') -- Prints the key pressed
end -- Ends if statement
end) -- Ends function
如果您只想发信号通知一个键(仅小写或仅大写),请查看下方。
仅小写:
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
mouse.KeyDown:connect(function(key)
if key == "e" then
print('You pressed e')
end
end)
仅大写:
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
mouse.KeyDown:connect(function(key)
if key == "E" then
print('You pressed E')
end
end)
或者,如果您只想发出任何键的信号,您也可以这样做:
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
mouse.KeyDown:connect(function(key)
print('You pressed '..key)
end)
希望我能帮助回答你的问题。
【讨论】: