同じ素材の断片を共有する複数のゲームオブジェクトをどのように持つのですか?


9

私の質問は、クローンではなく、同じマテリアルのピースをゲームオブジェクトで共有する方法はありますか?たとえば、これらのケースでは、同じマテリアルを共有する9つのゲームオブジェクトが、9つのオブジェクトのサイズを満たすように拡大されています。

草

そしてその場合、私は例えば真ん中のものを削除します、それは内部の空白で拡大された同じ素材を保持します:

草2

この目的のために、オブジェクトごとに1つのマテリアルを使用しましたが、私の意図は、複数のオブジェクトに1つのテクスチャを使用すること、または同じオブジェクトの異なる部分にある複数のテクスチャを使用することです。(カスタムUnity3Dテレインにあるペイントボタンのように)。


回答:


2

Unityのシェーダーグラフを使用して、マテリアルの独自のシェーダーを作成することを検討しましたか?テクスチャ/ UVにワールド空間の位置を使用することで、希望どおりの結果が得られる場合があります。私はそれを説明するのが苦手で、シェーダーは得意ではありませんが、退屈で実験専用のプロジェクトで遊んでいたため、ウォーターシェーダーとして簡単な例を模擬しました。

この写真は、重なり合う平面が同じマテリアルを共有しているように見えることを示しています 材料の例

これはシェーダーグラフで作った例です シェーダーグラフの例

私の例から理解したシェーダーノードの簡単な要約

  1. これらのノードは、ワールドスペースでx値とz値を取得し、それらをベクトル2に結合しています。
  2. このノードはxz値を使用しており、3のノードに基づいてオフセットしています
  3. TimeとVector 2 を使用して、UVオフセットをスクロールします。波の効果を与える
  4. 通常のタイリング値に基づいて値を乗算します。
  5. 4および法線マップからUVデータを取得します
  6. 通常の強度。効果の強さを変える
  7. 1から6までのすべてのデータと水のテクスチャを取得して、アルベドに送り込みます 8で
  8. これらの各プロパティがマテリアルにどのように影響するかをシェーダーが変更するために、すべてのノードがここにフィードされます。

私が言った、または行ったことが間違っている、または改善できると誰かが思った場合は、遠慮なく訂正してください。私はまだ学んでおり、正しい方向への微調整は常に歓迎されています。サンプルシーンをGoogleドライブにアップロードしました。帰属が必要かどうかは不明ですが、使用されている水資産は無料で、gametextures.comから提供されています


0

1つのテクスチャからスプライトアトラスを作成したり、平面または使用している任意の形状の子オブジェクトを作成したり、作成したスプライトカットアウトにドラッグしたり、好きなように回転させて平面ゲームオブジェクト内に子を配置したり、写真を見てください。以下に私の意味を確認します

スプライトアトラス

面倒な作業かもしれませんが、このソリューションはあなたが望むものに合うようです。


0

もう1つのオプションは、Unity標準アセットフォルダ内のProjectorオブジェクトを使用することです。パフォーマンスはそれほど高くありませんが、設定は非常に簡単です。したがって、単純なケースでは、それはまさにあなたが探しているものかもしれません。しかし、私が言ったように、特に大きなテクスチャを投影している場合は、かなり大きなパフォーマンスの影響があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.