Lua的KeyPress活动?

时间:2011-04-16 20:57:46

标签: events lua keypress

是否有可能让用户在lua上按键? FE。

while true do
    if keyPress(27)==true then
        print("You just pressed ESC")
    end
end

5 个答案:

答案 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)

希望我能帮助回答您的问题。