是什么导致我的 Garry 的 Mod Lua 脚本出现 "Tried to use a NULL physics object!" 错误?
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
在我删除所有现有的布娃娃之前,该错误一直在控制台中发送垃圾邮件
我的代码:
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 阐明如何检查 NULL
.
的 gmod 对象
在不了解 gmod 的 API 的情况下,我猜想 GetPhysicsObject
可以 return 描述 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)
Henrik 的回答是关于逻辑的。在尝试使用它之前,您确实需要确保物理对象有效。
在 GMod 中,这个函数是 IsValid
。
if IsValid(phys) then
我会添加这个作为对 Henrik 的回答的评论,但我还没有足够的代表。
我制作了一个让布娃娃向上飞的小脚本。它可以工作,但会留下一条错误消息,我不明白为什么。
[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
在我删除所有现有的布娃娃之前,该错误一直在控制台中发送垃圾邮件
我的代码:
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 阐明如何检查 NULL
.
在不了解 gmod 的 API 的情况下,我猜想 GetPhysicsObject
可以 return 描述 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)
Henrik 的回答是关于逻辑的。在尝试使用它之前,您确实需要确保物理对象有效。
在 GMod 中,这个函数是 IsValid
。
if IsValid(phys) then
我会添加这个作为对 Henrik 的回答的评论,但我还没有足够的代表。