【问题标题】:Materials, shaders and outlining the object in Unity3dUnity3d 中的材质、着色器和对象轮廓
【发布时间】:2016-08-24 17:52:17
【问题描述】:

如何勾勒出游戏中的对象? (为了显示玩家选择)。假设我有 5 个地精,我只想勾勒出与光标相交的那个。

我对材质和着色器的了解非常薄弱,所以可能我没有正确理解,但是...

...我看到的大多数答案都是使用轮廓着色器之类的东西。

但这是否意味着我必须为每个可选对象制作两个版本的材质?因为仅仅改变着色器就会改变具有相同材质的所有其他对象?

没有更好的办法吗?

【问题讨论】:

  • 如果您正在寻找快速解决方案,Asset Store 上有(付费)资产可以做这样的事情:assetstore.unity3d.com/en/#!/content/41508。 (如果这是出于业余爱好者/教育目的,我不建议这样做,因为在这种情况下,如果您首先尝试为自己编写解决方案会好得多。)

标签: c# unity3d shader


【解决方案1】:

我可以给你我的代码。我使用此代码突出显示房间中选择并使用 Raycasting 的对象。您只能突出显示一个对象,如果选择另一个,旧的将被取消选择...忽略 cmets,它们是德语:D

HighlightCode

Highlight Children

如果你想使用轮廓着色器,这是一个不错的选择:Outlined Diffuse

【讨论】:

  • 我有几个问题:1) 这个着色器的变体是否可以与新的 unity 5 标准着色器一起使用? 2)如果我要突出显示的对象由几个较小的对象组成怎么办? (像身体+武器)不会弄乱轮廓吗? 3)突出显示时您要更改什么颜色?是反照率颜色吗?
  • 让我们谈谈我的highlightCode,因为我只使用过一次Shaders,而且我是这个主题的菜鸟。我更新了我的代码和我在答案中使用的链接。 2) 我使用我的 highlightCode 来突出显示具有许多其他对象作为子对象的对象。您只需要输入孩子并更改那里的材料。 3) 它获取对象的当前颜色并添加一个值:new Color(oldColor.r + highlightFactor, oldColor.g + highlightFactor, oldColor.b + highlightFactor, oldColor.a); 1) 我想有很多教程如何使用着色器
  • 我对着色器和材质也很陌生,所以我不明白一件事?您正在更改的颜色 - 即基础材料颜色(反照率)?我使用的许多模型来自资产商店,它们的基础材料颜色为白色,所以我想我必须将它们变暗一点。
  • 是的,不是的,如果你的物体的颜色是白色的,那么它会更亮,也许是不利的^^。但如果物体是红色的,它将是鲜红色。您可以尝试取一个负值,这样它会更暗而不更亮
  • 如果颜色是白色的,添加highlightFactor后怎么会更亮?我认为最大值是白色的 255/255/255。
猜你喜欢
  • 1970-01-01
  • 2018-11-07
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
  • 2019-05-02
相关资源
最近更新 更多