Come avere più GameObjects che condividono pezzi dello stesso materiale?


9

La mia domanda è: esiste un modo per far sì che GameObjects condivida pezzi dello stesso materiale, non un clone, ma un'estensione di uno? Ad esempio, in questi casi nove oggetti di gioco condividono lo stesso materiale ingrandito per soddisfare le dimensioni di nove:

Erba

E nel caso, lo elimino ad esempio uno nel mezzo, manterrà lo stesso materiale ingrandito con lo spazio vuoto all'interno:

grass2

A tale scopo, ho usato un materiale per oggetto, ma la mia intenzione è di usarlo solo per una trama per più oggetti o, ad esempio, più di una trama in diverse parti dello stesso. (Come il pulsante di pittura che abbiamo in Unity3D Terrains personalizzato).


Risposte:


2

Hai esaminato l'utilizzo di Unity's Shadergraph per creare il tuo shader per il materiale? Potresti essere in grado di ottenere ciò che desideri utilizzando la posizione dello spazio del mondo per texture / uvs. Non sono bravo a spiegarlo e non sono bravo con gli shader, ma ho preso in giro un rapido esempio per te come shader d'acqua perché ero annoiato e giocavo già nel mio progetto dedicato agli esperimenti.

Questa immagine mostra che i piani sovrapposti sembrano condividere lo stesso materiale materiali di esempio

Questo è l'esempio fatto nello shadergraph Esempio di Shadergraph

Breve riepilogo dei nodi shader dal mio esempio, come li capisco

  1. Questi nodi stanno afferrando i valori x e z nello spazio del mondo e li combinano in un vettore 2
  2. Questo nodo utilizza i valori xz e li compensa in base ai nodi in 3
  3. usando Time and a Vector 2, per scorrere l'offset uv. dà un effetto onda
  4. Moltiplicare il valore basato sul valore di piastrellatura normale .
  5. Prende i dati UV da 4 e una mappa normale
  6. Forza normale. cambia la forza dell'effetto
  7. Prende tutti i dati da 1 a 6 e la trama dell'acqua e si immette in albedo 8
  8. tutti i nodi vengono inseriti qui affinché lo shader cambi il modo in cui ciascuna di queste proprietà influenza il materiale.

Se qualcuno ritiene che qualcosa che ho detto o fatto sia errato o possa essere migliorato, non esitare a correggermi. Sto ancora imparando e una spinta nella giusta direzione è sempre benvenuta. Ho caricato la scena di esempio su Google Drive per te con cui scherzare. incerto se è necessaria l'attribuzione, ma la risorsa idrica utilizzata è gratuita e da gametextures.com


0

Puoi creare un atlante di sprite da una trama, creare un oggetto figlio per il tuo piano o qualsiasi forma tu stia usando, trascinare i ritagli di sprite creati, ruotare e posizionare il bambino all'interno dell'oggetto del gioco come preferisci, e voilà, guarda l'immagine sotto per vedere cosa intendo,

atlanti sprite

Potrebbe essere un lavoro noioso, ma sembra che questa soluzione si adatti a ciò che desideri.


0

Un'altra opzione è quella di utilizzare l'oggetto Projector nella cartella delle risorse standard di unità. Non è molto performante, ma è davvero facile da configurare. Quindi, per casi semplici, potrebbe essere esattamente quello che stai cercando. Ma come ho detto, ha un impatto sulle prestazioni piuttosto significativo soprattutto se stai proiettando trame più grandi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.