簡體   English   中英

無法分配屬性 AnimationId。 預期的內容,沒有得到

[英]Unable to assign property AnimationId. Content expected, got nil

我不知道發生了什么,但我在 output 中遇到了這個錯誤。顯然 Anims 表和 normalcombo 表的每個動畫都存在,屬性也存在。 我在 Commandbar 中測試了它,但沒有用。 我不知道如何解決它,也不知道是什么問題。 請幫我。 代碼如下:

--本地腳本

local Replicated = game:GetService("ReplicatedStorage")
local UIS = game:GetService("UserInputService")
local Remote = Replicated.CombateEvent
local Player = game.Players.LocalPlayer
local Char = Player.CharacterAdded:Wait()
local Humanoid = Char:WaitForChild("Humanoid")
local istoolequipped = false
script.Parent.Equipped:Connect(function()
    istoolequipped = true
end)
script.Parent.Unequipped:Connect(function()
    istoolequipped = false
end)
local lastM1Time = 0
local lastM1End = 0
local combo = 1
local canAir = true
local Anims = {
    "rbxassetid://12270296026",
    "rbxassetid://12290262661",
    "rbxassetid://12290234803",
}
local normalcombo = {
    "rbxassetid://12303443278",
    "rbxassetid://12303443278",
    "rbxassetid://12303527113",
    "rbxassetid://12303770582"
}
function hb(size, cframe, ignore, char)
    local hitbox = Instance.new("Part", workspace)
    hitbox.Size = size
    hitbox.CFrame = cframe
    hitbox.Anchored = true
    hitbox.CanCollide = false
    hitbox.Transparency = .6
    hitbox.Name = "hb"
    hitbox.Material = Enum.Material.ForceField
    hitbox.CanQuery = false
    local connection
    connection = hitbox.Touched:Connect(function()
        connection:Disconnect()
    end)
    local lasttarget
    for _, v in pairs(hitbox:GetTouchingParts()) do
        if v.Parent:FindFirstChild("Humanoid") and table.find(ignore, v.Parent.Name) == nil then
            if lasttarget then
                if (lasttarget.Position - char.PrimaryPart.Position).Magnitude > (v.Position - char.PrimaryPart.Position).Magnitude then
                    lasttarget = v.Parent.PrimaryPart
                end
            else
                lasttarget = v.Parent.PrimaryPart
            end
        end
    end
    hitbox:Destroy()
    if lasttarget then
        return lasttarget.Parent
    else
        return nil
    end
end
UIS.InputBegan:Connect(function(input, istyping)
    if istyping then return end
    if input.UserInputType == Enum.UserInputType.MouseButton1 and tick() - lastM1Time > .3 and tick() - lastM1End > .7 and istoolequipped then
        if tick() - lastM1Time > .7 then
            combo = 0
        end
        lastM1Time = tick()
        local animation = Instance.new("Animation", workspace.Animation)
        local air = nil
        if UIS:IsKeyDown("Space") and canAir == true and combo == 2 then
            canAir = false
            air = "Up"
            animation.AnimationId = Anims[1]
        elseif UIS:IsKeyDown("Space") and combo == 3 and not canAir then
            air = "Down"
            animation.AnimationId = Anims[2]
        else
            animation.AnimationId = normalcombo[combo]
        end
        local load = Humanoid:LoadAnimation(animation)
        load:Play()
        animation:Destroy()
        local hitTarg = hb(Vector3.new(3,5,3), Char.PrimaryPart.CFrame * CFrame.new(0,0,-3), {Char}, Char)
        local Info = {
            ["Target"] = hitTarg,
            ["Combo"] = combo,
            ["Character"] = Char,
            ["Air"] = air
        }
        Remote:FireServer("Combo", Info)
        if combo == #normalcombo then
            combo = 1
            lastM1End = tick()
        else
            combo += 1
        end
        Humanoid.WalkSpeed = 0
        task.wait(.4)
        Humanoid.WalkSpeed = 16
    end
end)

錯誤將我發送到這一行:“ animation.AnimationId = normalcombo[combo]

該錯誤告訴您normalcombo[combo]返回 nil,而它應該是一個內容 url。這意味着combo不是 1 和 #normalcombo (4) 之間的值。

唯一可能的地方是這里:

        if tick() - lastM1Time > .7 then
            combo = 0
        end

此處您正在重置組合計數器,但您將其設置得太低了。 lua 中的 Arrays 是 1 索引的。 您需要將其設置為:

            combo = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM