Событие Roblox Touch на блоке только для ног - PullRequest
0 голосов
/ 19 мая 2018

Я открываю LUA и Roblox и тестирую свои первые сценарии.Я хотел бы знать правильный способ управления событием касания , когда персонаж касается блока ногами (ходьба или прыжки)

local function onTouch(hit)
    if hit ~= ??user.legs?? then 
        return 
    end
    -- exemple of action
    if hit.Parent.Humanoid.JumpPower < 150 then
        hit.Parent.Humanoid.JumpPower = hit.Parent.Humanoid.JumpPower + 5;
    end 
end

script.Parent.Touched:connect(onTouch)

1 Ответ

0 голосов
/ 24 июля 2018

Если вы пытаетесь справиться со столкновением, когда игрок касается части ногами, ваш код в порядке, но если вы хотите определить, когда игрок стоит на земле или нет, то это не так..

Лучшим подходом было бы следующее:

Пример:

IsOnGround=function()
local b=false;
local range=6;
local char=game:service("Players").LocalPlayer.Character;
local root=char:WaitForChild("HumanoidRootPart",1);
if root then
local ray=Ray.new(root.CFrame.p,((root.CFrame*CFrame.new(0,-range,0)).p).unit*range);
local ignore={char};
local hit,pos=workspace:FindPartOnRayWithIgnoreList(ray,ignore,false,false);
pcall(function()
if hit then
b=true;
end
end)
else
print("root not found");
end
return b;
end

Хотя этот метод неt самый надежный, он не похож ни на символы R15, ни на ходьбу.

Метод, который будет работать как 99% времени и прост в использовании, это FloorMaterial.

FloorMaterialявляется собственностью Гуманоида персонажа.Это свойство будет равно нулю, если игрок не стоит ни на чем (другими словами, не касается земли!). Этот метод можно включить в цикл, чтобы постоянно определять, стоите ли вы на блоке или нет.Этот метод также работает как для R15, так и для R6, и он менее сложен, чем при использовании .Touched соединения.

Пример:

    coroutine.wrap(function()
        while wait()do
            local floor=humanoid.FloorMaterial
            if(tostring(floor)=="Enum.Material.Air")or(floor==nil)then
                print("on air");
            else
                print("stepping over something");
            end
        end
    end)()

Надеюсь, мой ответ поможет.

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