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

问题描述:

我想让一个特定的播放器渲染高于一切。我试图做多件事情,包括使用ClientsideModel(),DrawModel()和类似的东西无济于事。 如果有人可以帮忙,那很好!我找不到其他人问这个问题。GMOD覆盖模型渲染以上道具/地图?

+1

欢迎来到Stack Overflow。请回顾[我如何问一个好问题](https://*.com/help/how-to-ask)。预计您已经研究过您的问题,并尝试在发布之前亲自编写代码。如果您遇到某些特定问题,请回过头来包括您尝试过的内容以及[最小,完整和可验证示例]的摘要(https://*.com/help/mcve)。 – FluffyKitten

+0

我曾经这样做过,是因为意外......让我搜索我的旧代码。将在我找到答案时发布答案。 – Mischa

要做到这一点,最好的方法是使用玩家的HUDPaint而不是模型绘制,因为这被称为last。因此,我们可以这样开始:

hook.Add("HUDPaint", "playerOverride", function() 

end) 

这是一个2D渲染环境,所以我们需要启动一个三维一体,这与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,或者更换。

如果你喜欢这个适用于每一个人,(我希望你不写wallhacks),那么你可以通过玩家列表循环与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) 

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

+0

迟到回复,不好意思,但是我刚刚结束了。我会接受你的回答,因为它是正确的。 –