如何为加入的其他玩家更改颜色?

时间:2019-04-04 16:14:50

标签: unity3d

我有坦克模型。我在Unity中使用材质为模型着色。 那么,例如,如果是第二个播放器模型,如何更改材质颜色?

1 个答案:

答案 0 :(得分:2)

根据您的情况,有很多不同的方法可以执行此操作。

1。。如果最多只允许2个或4个播放器,则可以为每个播放器创建不同的坦克预制件(使用不同的颜色材料),然后为每个实例实例化相应的坦克玩家加入游戏时。这是最简单的解决方案,将是解决此问题的好方法。

2。。如果您想在不创建更多材料或预制件的情况下更改坦克的颜色,则可以使用“材料属性块”在运行时更改新玩家坦克上每种材料的颜色。 。请查看this questionthis article了解更多信息。使用该文章中的Material Property Block解决方案时,需要创建一个内置着色器的副本并进行编辑,但是您只需要添加一行代码即可。如果您以前没有使用过着色器,则它们看起来可能令人生畏,但这还不错。

由于您将在运行时提供颜色,因此可以在脚本上为每个播放器材质使用全局“颜色”字段,也可以使用播放器索引生成颜色(推荐-以下示例)。使用播放器索引(playerIndex = 1、2 ... maxPlayers)可以使您拥有任意数量的不同背心类型,并且可以使用以下代码来获取颜色(然后提供给“材质属性块”的color属性)。

var c = Color.HSVToRGB(startHue + (playerIndex / (float)maxPlayers), 1, 1);

有关生成这种颜色的更多信息,请查阅文档here。您可以使用HSL颜色选择器here中的色相值选择startHue(将是播放器1的颜色)。