Jak vytvořit jednoduchý ovladač 3D postavy v Unity
27.05.2020
Jak vytvořit jednoduchý ovladač 3D postavy v Unity

Minule jsme si ukázali, jak se animuje 3D model v Unity engine. V tomto díle se podíváme na ovládání stejného modelu z pohledu třetí osoby, ať už na klávesnici nebo gamepadu.

Scéna je založena na té z minulého dílu, který doporučuji alespoň přečíst, protože do této scény je potřeba naimportovat animace pro chůzi a stání. Dnes budeme tvořit tuto scénu s několik herními objekty a kamerou přes rameno:

result.gif

Nejprve umístím kameru "přes rameno" objektu postavy a zároveň mu ji přiřadím jako dětský (child)  objekt.

 

Dále vytvořím složku pro skripty a vytvořím v ní skript PlayerController, ve kterém bude veškerá logika ovládání postavy. Kód níže používá vestavěné funkce Unity pro práci se vstupem. Načítám zde horizontální a vertikální osu pohybu - tedy v případě ovládání klávesnicí směrové klávesy (W,A,S,D a šipky) a v případě gamepadu jsou to joysticky. Potom provádím výpočty vektorů pohybu a předávám characterControlleru.

Picture 3.png

Objektu hráče přidám novou komponentu Character Controller, která se používá pro navigaci hráčovy postavy 3D světem hry. Upravím kolizní hranice, aby co nejpřesněji seděly na model - v tomto případě tvoří hranici kapsle.

Picture 4.png

Jako další věc přiřadím skript PlayerController herními objektu Player a přidám k němu právě vytvořený CharacterController (vše je na sebe napojeno v kódu výše).

Picture 5.png
unity

Do scény přidám ještě pár objektů, aby vypadala trochu zajímavěji a bylo snadnější se v ní orientovat. Všechny modely jsou z bezplatného Polygon balíku použitého také v minulém díle.

Picture 7.png

Po spuštění vypadá scéna následovně.

Hráč se může pohybovat, ale nejsou zde žádné animace, možnost rozhlížení se a rotace těla. Není nastavena gravitace, proto zůstane hráč levitovat ve stejné výšce ve vzduchu, když vyjde po schodech.

Picture 10.png

Gravitace

 Picture 11.png

Kamera


Hlavní kameru (která je v objektu Player) přiřadím do PlayerController skriptu.

Picture 12.png

 

Posledním krokem jsou animace. Animation Controller z minulého dílu měl pouze jednu animaci, breakdance. Z webu mixamo.com stahuji animaci pro chůzi a idle a propojím je přechody (pro návod na import animací viz předchozí díl).

Do Animation Controlleru pak už jen přidám boolean proměnnou isWalking (přes + tlačítko, new Bool).

Nastavím podmínky kliknutím na přechod a úpravou v pravém panelu:

A vše zavolám v kódu (do isWalking se zasílá stav chůze, buď se pohybuje, nebo ne):

Picture 16.png

Nakonec přiřadím Animator do vytvořené animator proměnné a vše spustím.



Kód ovladače je k dispozici na mém githubu. Výsledná scéna má pouze dva stavy, stání a chůzi vpřed. Pro složitější animace je nutné použít více proměnných a podmínek, to je však nad rámec tohoto článku. Pokud rádi experimentujete, můžete zkusit změnit pohled z třetí osoby na pohled první osoby (FPS) připnutím kamery k hlavě postavy.

V příštím díle dáme scéně šťávu a ukážeme si, jak přidat několik nepřátel a zbraně, aby se mohl hráč bránit.

Jan Jileček