Roblox Lua запускает скрипт, когда клавиша нажата и вы на определенном расстоянии - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь сделать сценарий в Roblox, чтобы, если вы находитесь в 20 гвоздях и нажимаете E, это вызывало диалог NP C. Он запускается внутри LocalScript. На данный момент у меня просто отображается сообщение, когда вы нажимаете E. Однако оно не будет отображаться.

local HumanoidRootPart = game.Players.LocalPlayer:WaitForChild("HumanoidRootPart")
local UserInputService = game:GetService("UserInputService")
local part = game.workspace.TableBox.TableTop

UserInputService.InputBegan:connect(function(keyCode)
    if keyCode.keyCode == Enum.KeyCode.E then
        if (part.Position - HumanoidRootPart.Position).magnitude < 20 then
            print("E has been pressed")
        end
    end
end)

Я также получаю эту ошибку в выводе (оранжевым цветом):

Возможна бесконечная доходность на Players.icrann: WaitForChild ("HumanoidRootPart") '

Я ожидаю, что local HumanoidRootPart = game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart") сработает, но в итоге выдает ошибку:

Players.icrann.PlayerScripts.Script: 1: попытка индексировать поле 'Character' (значение nil)

А также, когда я играю в игру, мой персонаж в проводнике выглядит так:

Explorer

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Замените это для HumanoidRootPart.

local Player = game:GetService("Players").LocalPlayer
local character = Player.Character or Player.CharacterAdded:Wait()
local HumanoidRootPart = character:WaitForChild("HumanoidRootPart")

0 голосов
/ 15 марта 2020

После многих часов исследований я нашел способ сделать это, он не работает на 100%, но он почти готов.

local HumanoidRootPart = workspace.icrann:WaitForChild("HumanoidRootPart")
local UserInputService = game:GetService("UserInputService")
local part = workspace.TableBox.TableTop

UserInputService.InputBegan:connect(function(keyCode)
    print(HumanoidRootPart.Position)
    if keyCode.keyCode == Enum.KeyCode.E and (part.Position - HumanoidRootPart.Position).magnitude <= 20 then
        print("E has been pressed")
    end
end)

Единственная проблема теперь заключается в получении имени пользователя игроков. Если у вас есть дополнительные предложения о том, как это сделать, пожалуйста, добавьте комментарий или ответ. Спасибо всем, кто пытался помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...