簡體   English   中英

是什么原因導致Garry的Mod Lua腳本中出現“嘗試使用NULL物理對象!”錯誤?

[英]What causes “Tried to use a NULL physics object!” error in my Garry's Mod Lua script?

我制作了一個小腳本,使布娃娃向上飛。 它可以工作,但是會留下一條錯誤消息,我無法弄清原因。

[ERROR] RunString:11: Tried to use a NULL physics object!  
  1. ApplyForceCenter - [C]:-1  
   2. fn - RunString:11  
    3. unknown - addons/ulib/lua/ulib/shared/hook.lua:179

在我刪除所有現有的ragdolls之前,錯誤在控制台中變得垃圾郵件

我的代碼:

hook.Add("Think", "Fly", function()

ent = ents:GetAll()

    for k, v in pairs(ent) do
    local isRagdoll = v:IsRagdoll()
        if isRagdoll == true then
        phys = v:GetPhysicsObject()
        phys:ApplyForceCenter(Vector(0, 0, 900))

        end
    end
end)

提前致謝。

編輯 :感謝MattJearnes闡明了如何檢查gmod對象是否為NULL

在不了解gmod的API的情況下,我猜想GetPhysicsObject可以返回一個表示NULL的特殊值,在這種情況下,您無法對其調用ApplyForceCenter 您應該在使用IsValid做任何事情之前簡單地檢查NULL

    hook.Add("Think", "Fly", function()
    ent = ents:GetAll()

    for k, v in pairs(ent) do
        local isRagdoll = v:IsRagdoll()
        if isRagdoll == true then
            local phys = v:GetPhysicsObject()
            if IsValid(phys) then
                phys:ApplyForceCenter(Vector(0, 0, 900))
            end
        end
    end
end)

亨里克的答案是關於邏輯的。 在嘗試使用物理對象之前,您確實需要確保其有效。

在GMod中,此函數是IsValid

if IsValid(phys) then

我會將其添加為對Henrik的回答的評論,但我還沒有足夠的代表。

暫無
暫無

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

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