GMOD覆盖模型渲染上面的道具/地图?

时间:2017-09-09 03:25:11

标签: lua garrys-mod

我正在尝试让特定的播放器渲染高于其他所有内容。 我试图做多件事,包括使用ClientsideModel(),DrawModel()和类似的东西无济于事。 如果有人可以提供帮助,那就太好了!我找不到其他人问这个。

1 个答案:

答案 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)

(注意,我目前无法对此进行测试,但我对此非常有信心)