我正在尝试让特定的播放器渲染高于其他所有内容。 我试图做多件事,包括使用ClientsideModel(),DrawModel()和类似的东西无济于事。 如果有人可以提供帮助,那就太好了!我找不到其他人问这个。
答案 0 :(得分:0)
执行此操作的最佳方法是使用播放器的HUDPaint
而不是模型绘制,因为这是最后一次调用。所以我们可以从:
hook.Add("HUDPaint", "playerOverride", function()
end)
这是一个2D渲染上下文,所以我们需要启动一个3D渲染,这很容易使用cam.start3D()
hook.Add("HUDPaint", "playerOverride", function()
cam.Start3D()
cam.End3D()
end)
然后,当然,我们只用Entity:DrawModel()
hook.Add("HUDPaint", "playerOverride", function()
cam.Start3D()
target:DrawModel()
cam.End3D()
end)
上面的代码假设您已经考虑了目标,您可以将target
设置为或替换它。
如果您更愿意将此应用于所有人,(我希望您不是在写壁纸),那么您可以使用player.getAll()
循环播放玩家列表
hook.Add("HUDPaint", "playerOverride", function()
cam.Start3D()
for k,v in pairs(player.GetAll()) do
if v ~= LocalPlayer() then -- Make sure we don't redraw ourselves
v:DrawModel()
end
end
cam.End3D()
end)
(注意,我目前无法对此进行测试,但我对此非常有信心)