KeyPress событие в Lua? - PullRequest
       36

KeyPress событие в Lua?

3 голосов
/ 17 апреля 2011

можно ли заставить пользователей нажимать на lua?Fe.

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

Ответы [ 5 ]

6 голосов
/ 17 апреля 2011

Lua основывается на чрезвычайной мобильности.Как таковой, он основан на предоставлении, по сути, только того, что доступно в ANSI C с точки зрения возможностей.(Я думаю, что единственным исключением из этого является динамическое связывание, которое не является функцией ANSI и доступно не на всех платформах, но настолько полезно, что его используют для многих.)

ANSI C этого не делаетобеспечить функциональность нажатия клавиш, чтобы библиотека Lua по умолчанию тоже не работала.

При этом, хранилище LuaRocks может привести вас к библиотеке с этой возможностью.Например, возможно, что ltermbox , найденный на странице LuaRocks, обладает необходимой вам функциональностью.(Вероятно, вам придется удалить ненужные фрагменты.) Могут быть и другие доступные библиотеки.Идите копать.

Если это не удастся, вся точка Lua - это расширяемость.Это расширяемый язык расширения.На самом деле не так сложно прокрутить собственное расширение , которое обеспечивает необходимую вам функциональность.

2 голосов
/ 29 декабря 2011

Похоже, вы пытаетесь создать игру.Для 2D-игр вы можете рассмотреть love2d .Это выглядит немного странно, но это работает, и это относительно легко по сравнению с другими языками, такими как C.

2 голосов
/ 17 апреля 2011

В проекте NTLua есть привязка к getkey ().Вы можете получить некоторые источники оттуда.

(это просто обертка getch ())

1 голос
/ 17 апреля 2011

Нет в наличии Lua. Вероятно, с дополнительной библиотекой.

0 голосов
/ 28 декабря 2018

Первым делом: если вы используете мой метод, вам нужно поместить сценарий (и), который вы используете, в 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)

Надеюсь, я помог ответить на ваш вопрос.

...