是否有可能让用户在lua上按键? FE。
while true do
if keyPress(27)==true then
print("You just pressed ESC")
end
end
答案 0 :(得分:6)
Lua的前提是极端的便携性。因此,它基于仅提供ANSI C中可用的功能。 (我认为唯一的例外是动态链接,这是一种非ANSI功能,并非在所有平台上都可用,但非常有用,以至于它们已经为许多平台提供了它。)
ANSI C不提供按键功能,因此默认的Lua库也不提供。
话虽这么说,LuaRocks存储库可能会引导您进入具有此功能的库。例如,可能是在那里的LuaRocks页面上找到的ltermbox具有您需要的功能。 (您可能不得不删除您不想要的位。)可能还有其他库可用。去挖掘。
如果不这样,Lua的整个点就是可扩展性。它是一种可扩展的扩展语言。 hand-roll your own extension提供您想要的功能实际上并不困难。
答案 1 :(得分:2)
NTLua项目中存在对getkey()的绑定。你可以从那里得到一些资料。
(它只是包裹了getch())
答案 2 :(得分:2)
好像你正在尝试制作一款游戏。对于2D游戏,您可能需要考虑love2d。它看起来有点奇怪,但它可以工作,与C等其他语言相比,它相对容易。
答案 3 :(得分:1)
没有库存Lua。可能还有一个额外的图书馆。
答案 4 :(得分:0)
首先是第一件事:如果您使用的是我的方法,则需要将使用的脚本放入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)
希望我能帮助回答您的问题。