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:
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.
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.
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).
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.
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.
Gravitace
Kamera
Hlavní kameru (která je v objektu
Player) přiřadím do
PlayerController skriptu.
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):
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