站在砖头上时举起手来的动画 [ROBLOX]

Hands up animation when stand on a brick [ROBLOX]

我需要一个脚本,当你站在一块砖上时,它可以做一个动画。我只是不知道如何制作动画。我找不到包含我正在寻找的动画的免费模型。这是我希望如何举手的预览。 PREVIEW OF THE ANIMATION

你脚下的砖是

script.Parent

动画主要有两种方式;较新的 Animations and the older Joints.

guide should be able to help you to getting started with animations. It even got a video.

如果你想使用老式的联合动画,像这样的东西可能会起作用:

local Block = script.Parent

local function MakeFakeShoulder(Character, Side)
    local Controller = { ["Stop"] = function() end }

    local Torso = Character:findFirstChild("Torso")
    local Arm = Character:findFirstChild(Side .. " Arm")

    if not Torso or not Arm then return Controller end

    local Shoulder = Torso:findFirstChild(Side .. " Shoulder")
    if Shoulder then
        local FakeShoulder = Instance.new("ManualWeld")
        FakeShoulder.Name = "Fake " .. Side .. " Shoulder"
        FakeShoulder.C0 = CFrame.new(1.5 * (Side == "Right" and 1 or -1),0.5,0)
        FakeShoulder.C1 = CFrame.new(0,0.5,0) * CFrame.fromAxisAngle(Vector3.FromAxis(Enum.Axis.Z), math.rad(-180))
        FakeShoulder.Part0 = Torso
        FakeShoulder.Part1 = Arm
        FakeShoulder.Parent = Torso

        Shoulder.Parent = nil

        function Controller:Stop()
            Shoulder.Parent = Torso
            FakeShoulder:Destroy()
        end
    end
    return Controller
end

local function MakeFakeShoulders(Character)
    local Controller = { }

    local Right = MakeFakeShoulder(Character, "Right")
    local Left = MakeFakeShoulder(Character, "Left")

    function Controller:Stop()
        Right:Stop()
        Left:Stop()
    end

    return Controller
end

local function GetHumanoid(Part)
    if Part.Parent == nil then return nil end
    return Part.Parent:findFirstChild("Humanoid")
end

local CurrentlyTouching = { }
Block.Touched:connect(function(Part)
    local Humanoid = GetHumanoid(Part)
    if not Humanoid then return end

    CurrentlyTouching[Humanoid] = CurrentlyTouching[Humanoid] or 0
    CurrentlyTouching[Humanoid] = CurrentlyTouching[Humanoid] + 1
    if CurrentlyTouching[Humanoid] > 1 then return end

    local Controller = MakeFakeShoulders(Part.Parent)   

    while CurrentlyTouching[Humanoid] > 0 do
        if GetHumanoid(Block.TouchEnded:wait()) == Humanoid then
            CurrentlyTouching[Humanoid] = CurrentlyTouching[Humanoid] - 1
        end
    end

    Controller:Stop()
end)

请注意,如果结束触摸注册得不够好,请制作一个比可视部分大的不可见 CanCollide = false 边界部分,然后将脚本放在该部分中,