Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why is it taking a while to move?

Asked by 2 years ago
Edited 2 years ago

So I'm making a PBB trainer battle style thing, and when you walk in front of a trainer, I want it to wave and then walk towards you. It's waving, but it takes like 20 seconds to walk towards you after that. Here is my code:

function module:WalkTo(model, point, speed)
    if not model then return end

    local root = model:FindFirstChild('HumanoidRootPart')
    local humanoid = model:FindFirstChild('Humanoid')

    if not root then return end

    local prespeed = humanoid.WalkSpeed

    humanoid.WalkSpeed = speed or humanoid.WalkSpeed

    local initialDirection = ((point-root.Position)*flat).Unit

    while true do
        local direction = ((point-root.Position)*flat).Unit

        if math.deg(math.acos(direction:Dot(initialDirection))) > 80 then break end
        if not humanoid or not humanoid.Parent then return end

        print("Moving")

        humanoid:Move(direction)

        runService.RenderStepped:Wait()
    end

    humanoid:Move(Vector3.zero)
    humanoid.WalkSpeed = prespeed
end

while true do
    wait()
    for i, v in pairs(trainers) do
        raycastparams.FilterDescendantsInstances = { v }
        raycastparams.FilterType = Enum.RaycastFilterType.Blacklist

        local raycast = workspace:Raycast(v.HumanoidRootPart.Position, v.HumanoidRootPart.CFrame.LookVector*100, raycastparams)

        if raycast then
            if raycast.Instance.Parent:FindFirstChild("Humanoid") then
                game.ReplicatedStorage.Events.SetPlayerMovespeed:FireServer(0, "code")

                local animToPlay = v.Humanoid.Animator:LoadAnimation(script.Parent.WaveAnimation)
                animToPlay:Play()

                local playerPos = raycast.Instance.Parent.PrimaryPart.Position

                print(playerPos)

                wait()

                module:WalkTo(v, playerPos, 16)

                module:say(require(v.Interact).lines, game.Players.LocalPlayer:GetMouse(), v, false, true, v)
            end
        end
    end
end

Any help?

Answer this question