这是一个Unity工程师编写的解决方案,描述如何在Unity中实ices一个在游戏中可见的第一人称玩家身体,并在inventoryUI中渲染这个玩家模型,而不使用两个不同的玩家模型。这解决了许多问题,包括避免使用两个玩家模型,能够正确地计算Foot IK,以及保持玩家头和胳膊仅渲染阴影,而不渲染网格。
这个解决方案通过使用Unity内置的OnPreRender和OnPostRender函数来实现的。这些函数分别在渲染开始和结束时被调用。我们在这些函数中执行的操作有:
在OnPreRender函数中:我们将玩家模型的位置设置为目标位置,仅仅渲染某些渲染器的阴影。
在OnPostRender函数中:我们将玩家模型的位置设置回零,恢复所有的渲染器。
这个解决方案使用了一个名为PlayerModelRenderer的脚本,它挂载在主相机上。这个脚本有以下成员变量:
playerRoot:玩家模型的根对象。renderersToExclude:要排除的渲染器列表。targetPlayerModelPos:目标玩家模型的位置。playerRenderers:玩家模型的渲染器数组。rendererCount:渲染器数组的长度。finalRenderers:排除渲染器后剩下的渲染器数组。
这个脚本有两个函数:
RefreshRenderers:更新渲染器列表。OnPreRender:设置渲染器为阴影模式。OnPostRender:恢复渲染器。
通过在主相机上使用这个脚本,我们可以实现既渲染玩家模型又不渲染阴影的效果。
评论 (0)