将 GMOD 模型覆盖到道具/地图之上?

我正在尝试让特定的玩家在所有其他东西之上呈现。 我尝试过多种方法,包括使用 ClientsideModel()、DrawModel() 等等,但都没有成功。 如果有人能帮忙,那就太好了!我没能找到其他人提出这个问题。

点赞
用户7170955
用户7170955

最好的方法是使用玩家的 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 -- 确保不会重绘自己
                v:DrawModel()
            end
        end
    cam.End3D()
end)

(请注意,我现在无法测试它,但我非常有信心)

2017-09-13 05:22:43