Click to move navigace. Log #4 (Unity)
14.03.2017

                Hra bude typu click to move, tedy kam kliknu, tam postava půjde/poběží. Tohle má Unity naštěstí již zmáknuté a tak toho využiji. Unity používá něco, zvané NavMesh (Navigation Mesh) a NavMesh Agent. Tohle "něco" funguje tak, že "peče" mesh přes statické objekty ve scéně. Tenhle mesh pak slouží k navigaci pro agenta. Veškeré předměty, označené v inspektoru jako Static budou brány jako nepohyblivé předměty, které agent považuje za nepřístupná místa (ne jako překážky) a v generovaném meshi vzniknou "díry". Potom je možné volit také tzv. levely, něco jako patra, ty pak agent může využít pro seskakování, nebo naopak. To ale ve hře používat nebudu, tak se nebudu pouštět do hlubšího popisu.

Jak tedy na to? Jednoduše, přidám záložku Navigation (Window>Navigation) a v tlačítku Bake je pak nastavení.


Panel


Agent Radius je šířka agenta, tohle slouží k tomu aby NavMesh věděl jak blízko se může agent dostat k objektům.

Agent Height je výška agenta, kterou používá pro generování levelů. Resp na jak vysoké statické předměty ještě může generovat mesh.

Max Slope je max úhel, na který bude agent schopný ještě jít.

Step Height je max výška schodku, který agent ještě zvládne vylézt, respektive kde generovat mesh a kde ne.

Off Mesh Links slouží právě pro přeskakování nebo seskakování z meshe do meshe. Tím se zabývat nebudu.

Na vybraném objektu pak v záložce Objekt vyberu Navigation Static, pak kliknu na záložku Bake a stejnojmenné tlačítko a vznikne mi navigační mesh.

                Tohle ovšem nestačí, abychom se mohli po ostrově hýbat, potřebujeme něco co bude s navigačním meshem pracovat. K tomu je komponent Nav Mesh Agent. Vyberu tedy svoji postavu a v inspektoru kliknu na AddComponent>Navigation>NavMeshAgent. Tenhle agent je reprezentován válcem kolem objektu. V inspektoru je potřeba jej nastavit tak aby kopíroval vnější body objektu.


NavMeshAgent


Radius a Height asi nemusím popisovat.

Base Offset slouží k posunutí válce agenta po ose Y, tedy nahoru/dolů (nebo i jinými směry pokud má objekt otočené osy).

Speed je rychlost pohybu agenta.

Angular speed je rychlost otáčení, tohle je potřeba nastavit v závislosti na animaci postavy.

Acceleration je zrychlení.

Stopping distance je vzdálenost zastavení agenta od cíle.

Auto braking vyhodnocuje kdy zastavit agenta a kdy ne. Já měl vždy lepší výsledky když to bylo zaškrtnuté.

S ostatním nastavením se obvykle vůbec nehraji.


NavMesh


Příště se pustíme do pohybu postavy.