Почему мой сценарий полета не работает правильно? - PullRequest
0 голосов
/ 07 января 2019

Я делаю скрипт полета для использования в ProtoSmasher, и он работает не так, как задумано. Я хочу, чтобы он имел кнопку переключения (G), а затем мог летать с кнопкой (W). Вместо этого, чтобы заставить его работать, я должен удерживать W, а затем нажать G; но если я попытаюсь отпустить w, чтобы остановиться в воздухе, мне придется снова нажать G.

local plr = game:GetService("Players").LocalPlayer
local char = plr.Character
local hum = char.Humanoid
local Torso = char.HumanoidRootPart
local Mouse = plr:GetMouse()
local toggle = false
local wToggle = false

Mouse.KeyDown:Connect(function(key)
    if key == "w" then
        wToggle = true
    end
    if key == "g" then
        if toggle == false then
            toggle = true
            local BV = Instance.new("BodyVelocity",Torso)
            BV.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
            while wToggle == true do
                BV.Velocity = Mouse.Hit.lookVector*200
                wait()
            end
        end
        if toggle == true then
            toggle = false
            Torso:FindFirstChildOfClass("BodyVelocity"):remove()
        end
    end
end)

Mouse.KeyUp:Connect(function(key)
    if key == "w" then
        wToggle = false
    end
end)

1 Ответ

0 голосов
/ 08 января 2019

Похоже, вы пытаетесь подключиться к нажатию клавиш клавиатуры, но вы делаете это в прослушивателе событий для нажатий кнопок мыши.

Попробуйте что-то вроде этого:

local isFlying = false

local function onKeyPress(actionName, userInputState, inputObject)
    local isKeyDown = userInputState == Enum.UserInputState.Begin
    local isKeyUp = userInputState == Enum.UserInputState.End

    if actionName == "toggleFlight" then
        if isKeyUp then
            isFlying = not isFlying
        end

    elseif actionName == "fly" then
        if isKeyDown then
            -- start flying forward
        elseif isKeyUp then
            -- stop flying
        end
    end
end

-- listen for keyboard input
game.ContextActionService:BindAction("toggleFlight", onKeyPress, false, Enum.KeyCode.G)
game.ContextActionService:BindAction("fly",          onKeyPress, false, Enum.KeyCode.W)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...