Een geanimeerde waterval maken

Ben je klaar om te vechten tegen een andere gevaarlijke vijand van je spel? Een vijand? Ja, het is de uitvoering!

Zoals we in mijn vorige artikel hebben besproken, zullen slechte prestaties een geweldig spel doden.

Vooral op mobiele en webplatforms is de prestaties een groot probleem. Maar dit is niet alleen een actueel probleem: in het verleden waren pc's en consoles minder krachtig dan nu. En door in het verleden te zoeken, kunnen we geweldige en slimme oplossingen vinden.

Vandaag leer je hoe je een geweldige waterval in je spel kunt zetten zonder de prestaties te verslechteren.

We gebruiken de onderstaande items:

  • Unity 5 (het is gratis: download het nu!)
  • Een textuur als deze:

En stop! Het is een soort magie!

Het effect van de waterval

Bekijk de video hieronder:

Dit is een geweldige waterval, is het niet? Ik hou ervan. Ik zou heel graag zo'n waterval in mijn spel willen stoppen. Maar hoe?

We kunnen beginnen met een deconstructietechniek. Bekijk aandachtig naar de scène: van welke onderdelen is het gemaakt?

  • de rivier (bovenaan)
  • de waterval (verticaal)
  • de rivier (aan de onderkant)
  • wat stoom waar de waterval eindigt
  • wat nevel waar de waterval begint en eindigt

We kunnen het met een paar items doen, zonder de prestaties te doden.

Maar eerst leg ik je uit ...

Waarom kunnen we 'echt water' niet gebruiken op mobiel?

In een 3D-game wordt water gemaakt met specifieke shaders en componenten (zoals deeltjes) die tijdens de renderingfase veel tijd kosten. Om deze reden worden oplossingen op hoog niveau niet aanbevolen voor een mobiel spel.

Deze tutorial is geschreven om een ​​eenvoudige manier voor te stellen om een ​​waterval in een game te plaatsen zonder FPS te verliezen.

1. Maak de eerste scène

  • Open eenheid
  • Maak drie vlakken zoals in het onderstaande voorbeeld
  • Maak drie materialen met de Mobile / Particle / Alpha Blended shader (Waterfall_bottom, Waterfall_main, Waterfall_top).
  • Voeg aan alle drie de materialen de textuur "waterfall_texture" toe.

2. De code

  • De 'kern' van dit idee is om de geanimeerde UV-kaart te gebruiken.
  • Maak een nieuw script in c # (noem het "ScrollUV").
  • Binnen zet je deze heel korte code:
gebruikmakend van UnityEngine; met behulp van System.Collections; public class Waterfall_UV: MonoBehaviour public float WF_speed = 0.75f; openbare Renderer WF_renderer; void Start () WF_renderer = GetComponent();  void Update () float TextureOffset = Time.time * WF_speed; WF_renderer.material.SetTextureOffset ("_ MainTex", nieuwe Vector2 (0, TextureOffset)); 
  • Sla het bestand op en voeg dit script toe aan alle vliegtuigen.

3. Pas de cijfers aan

U moet de structurering van de texturen in de drie materialen aanpassen aan de grootte van uw vlakken.

Je moet ook de snelheid aanpassen: het verticale vlak moet sneller zijn dan de andere.

Het uiteindelijke effect zou als volgt moeten zijn:

En ... het is afgelopen. Druk op play en bekijk het resultaat.

Bonus: een deeltjessysteem

Als je wat deeltjes wilt toevoegen om meer effecten aan je waterval toe te voegen, zijn hier een paar ideeën.

Notitie: de texturen zijn gemaakt met Paint of iets dergelijks. Ze zijn heel, heel eenvoudig, dus iedereen kan zo texturen maken.

verstuiven

Maak een PS en noem deze "PS_spray". Verplaats het in je scène tot het onderaan de waterval is.

Gebruik deze parameters:

Dupliceer het en verplaats het totdat het bovenaan de waterval staat.

Stoom

Maak een PS en noem deze "PS_steam". Verplaats het in je scène tot het onderaan de waterval is.

Gebruik deze parameters:

Bonus 2: Lava

Dit is een eenvoudige truc om een ​​lavawaterval te hebben: verander de kleur van de textuur als volgt:

Misschien wilt u de maximale deeltjes van de stoom verhogen; en vergeet niet om de spuitdeeltjes te verwijderen.

Conclusie

Soms is de snelle oplossing ook de beste oplossing.

Deze tutorial bijvoorbeeld, werd in het verleden geboren, in de jaren '90, toen pc's minder krachtig waren dan tegenwoordig en ontwikkelaars een aantal creatieve oplossingen moesten vinden om met hun beperkingen te werken..

De 'truc' van een geanimeerde UV-kaart is perfect voor veel situaties.

Bijvoorbeeld,je kunt het gebruiken om een ​​achtergrond te animeren. Of, als de textuur meer tegels heeft (zoals een "frame van een cartoon"), kunt u een korte filmische reeks maken. De enige beperking is je verbeelding.

Waarom is het tegenwoordig erg belangrijk om technieken als deze te begrijpen? Omdat je altijd, in game dev, grenzen zult vinden die je zult moeten vinden. En het bestuderen van het verleden is naar mijn mening de beste manier om te leren voor de toekomst.