Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Vytvoření scény hráče
S připraveným projektem můžeme začít pracovat na postavě, kterou bude ovládat hráč.
První scéna bude definovat objekt Player. Jednou z výhod vytvoření samostatné scény pro postavu hráče je, že ji můžeme testovat samostatně, dokonce ještě předtím, než vytvoříme další části hry.
Struktura uzlu
Nejprve musíme pro objekt hráče vybrat vhodný kořenový uzel. Obecně vzato by kořenový uzel scény měl odrážet požadovanou funkčnost objektu – to, co objekt je. V záložce "Scéna" v levém horním rohu klikněte na tlačítko "Jiný uzel" a přidejte do scény uzel Area2D ("2D oblast").
Poznámka
Godot also provides the CharacterBody2D node, specifically designed for 2D characters, which includes built-in support for some of the processes explained in this tutorial. In many real world projects, CharacterBody2D would be a better choice for players and enemies. However, this tutorial focuses on core concepts that apply to a wider range of nodes and use cases.
Když uzel Area2D přidáte, Godot vedle něj ve stromu scény zobrazí následující varovnou ikonu:
Toto varování nám říká, že Area2D vyžaduje tvar pro detekci kolizí nebo překrývání. Varování můžeme prozatím ignorovat. Nejdříve nastavíme podobu hráče pomocí animovaného spritu. Jakmile budeme mít připravenu vizuální stránku, přidáme nový podřízený uzel pro kolizní tvar. To nám umožní přesně nastavit velikost a umístění tvaru na základě vzhledu spritu.
Pomocí Area2D můžeme detekovat objekty, které překryjí nebo narazí do hráče. Změňte název uzlu na Player tím, že na něj poklepáte. Nyní, když jsme nastavili kořenový uzel scény, můžeme přidat další uzly, které nám umožní používat další funkce.
Než uzlu Hráč přidáme potomky, chětli bychom se ujistit, že je omylem nepřemístíme nebo nezměníme jejich velikost, když na ně klikneme. Vyberte uzel a klikněte na ikonu napravo od zámku. V jeho nápovědě by mělo stát "Seskupí vybraný uzel s jeho potomky. To způsobí, že při kliknutí na libovolný podřízený uzel ve 2D a 3D pohledu bude vybrán rodič."
Uložte scénu pod názvem player.tscn. Klikněte na Scéna > Uložit, případně stiskněte Ctrl + S v systému Windows/Linux nebo Cmd + S v systému macOS.
Poznámka
V tomto projektu budeme dodržovat konvence Godotu pro názvy identifikátorů.
GDScript: Třídy (uzly) používají PascalCase, proměnné a funkce používají snake_case a konstanty používají ALL_CAPS (viz Průvodce stylem GDScript).
C #: Třídy, exportované proměnné a metody používají PascalCase, soukromá pole používají _camelCase, místní proměnné a parametry používají camelCase (viz C# style guide). Při připojování signálů dávejte pozor, abyste názvy metod zadali přesně.
Animace spritu
Klikněte na uzel Player a přidejte mu (Ctrl + A v systému Windows/Linux nebo Cmd + A v systému macOS) podřízený uzel AnimatedSprite2D ("2D animovaný sprite"). AnimatedSprite2D se postará o vzhled a animace našeho hráče. Všimněte si, že vedle uzlu je varovný symbol. AnimatedSprite2D vyžaduje zdroj SpriteFrames ("snímky spritu"), což je seznam animací, které může zobrazit. Ujistěte se, že máte AnimatedSprite2D vybraný a v Inspektoru najděte vlastnost Sprite Frames v sekci Animation a klikněte na "[prázdné]" -> "Nový SpriteFrames":
Kliknutím na SpriteFrames, které jste právě vytvořili, otevřete panel "Snímky spritu":
Vlevo je seznam animací. Klikněte na výchozí a přejmenujte jej na walk ("chůze"). Poté klikněte na tlačítko Přidat animaci a vytvořte druhou animaci s názvem up ("nahoru").
Najděte obrázky hráče v doku Souborový systém - jsou ve složce art, kterou jste před chvílí rozbalili. Přetáhněte oba obrázky odpovídajících animací na stranu panelu Snímky animace:
playerGrey_walk1aplayerGrey_walk2pro animaciwalkplayerGrey_up1aplayerGrey_up2pro animaciup
Obrázky hráče jsou pro okno hry příliš velké, takže je musíme zmenšit. Klikněte na uzel AnimatedSprite2D a nastavte vlastnost Měřítko na (0.5, 0.5). Najdete jej v Inspektoru pod hlavičkou Node2D ("2D uzel").
No a konečně přidejte uzlu Player potomka CollisionShape2D ("2D kolizní tvar"). Ten bude určovat hráčův "hitbox", neboli hranice jeho kolizní oblasti. Pro tuto postavu nejlépe vyhovuje uzel CapsuleShape2D ("2D tvar kapsle"). V Inspektoru tedy vedle "Tvar" klikněte na "[prázdné]" -> "Nový CapsuleShape2D". Pomocí dvou úchytů velikosti změňte velikost tvaru tak, aby pokryl celý sprite:
Až budete hotovi, měla by vaše scéna Player vypadat takto:
Varování na uzlu Area2D by nyní mělo zmizet, protože má nyní přiřazený tvar a může interagovat s jinými objekty.
Nezapomeňte scénu po těchto změnách znovu uložit.
V příští části připojíme k uzlu hráče skript, který nám umožní ovládat jeho pohyb a animace. Poté nastavíme detekci kolize, abychom věděli, kdy hráče něco zasáhlo.