Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Ovladač postavy vám může pomoci implementovat do vaší hry jednoduchou pohybovou fyziku.

K ovladačům postav Unity3D můžete přistupovat z několika úhlů. Pokud používáte knihovnu s výkonnými třídami a funkcemi, vytvoření ovladače postav založeného na fyzice může být zábavným místem pro zahájení vývoje hry.

Krok 1: Vytvořte scénu s objekty hráče a terénu

Jakmile je Unity otevřené a vytvoříte nový projekt, můžete začít přidáním několika objektů do vaší scény. Tyto objekty můžete vytvářet v libovolném pořadí, ale buďte opatrní, abyste se ujistili, že používáte správná nastavení. I když je tento projekt základní, je to skvělý způsob začněte s Unity.

3D rovinný objekt pro terén

První objekt, který přidáte do scény, je rovina. Klepněte pravým tlačítkem myši do podokna hierarchie a najeďte na něj 3D objekta vyberte Letadlo ze seznamu. Můžete upravit velikost letadla, abyste získali větší testovací plochu, ale nemusíte s tím dělat nic jiného.

instagram viewer

Model přehrávače krychlových objektů

Dále je čas přidat do scény kostku, která bude fungovat jako model hráče. Klepněte pravým tlačítkem myši do podokna hierarchie a najeďte na něj 3D objekta vyberte Krychle z rozbalovací nabídky. Umístěte novou kostku tak, aby seděla nad rovinou, kterou jste také přidali. Musíte také přidat komponentu tuhého tělesa, abyste z krychle udělali fyzikální objekt.

Vyberte kostku a přejděte do Inspektora. Klikněte na Přidat komponentu ve spodní části panelu vyhledejte tuhé těleso a vyberte Pevné tělo ze seznamu, když se objeví. Zaškrtněte Použijte Gravitaci zaškrtněte políčko a zbytek nastavení nechte tak, jak jsou.

Můžeš najít aktiva Unity zdarma online k vylepšení vašeho projektu.

Fotoaparát třetí osoby

Vaše scéna by již měla mít kameru, kterou můžete použít jako svou třetí osobu. Umístěte kameru tak, aby seděla v pohodlné poloze třetí osoby nad vaší kostkou. Před přetažením kamery na krychli přejděte do podokna hierarchie a vytvořte vztah rodič-dítě. Kamera bude automaticky sledovat vaši kostku, když je toto hotovo.

Rychlý test

I když vaše scéna ještě nemá žádný kód, můžete otestovat práci, kterou jste dosud dělali. Klikněte na Hrát si tlačítko v horní části obrazovky pro načtení hry. Měli byste vidět, jak kostka padá a přistává na vrcholu letadla, a kamera by měla sledovat kostku, jak padá.

Krok 2: Nastavte soubor C#

Nyní je čas vytvořit soubor C#, abyste mohli začít programovat nějaký pohyb. Přejděte do sekce Projekt, klikněte pravým tlačítkem myši, najeďte myší na Vytvořit a ze seznamu vyberte Složka. Pojmenujte složku Scripts nebo něco podobného.

Procházejte novou složku a opakujte proces, ale ze seznamu vyberte C# Script. Tomuto souboru můžete dát libovolný název, ale bude to také název hlavní funkce v něm. Ujistěte se, že váš nový C# vypadá takto.

použitím Systém. Sbírky;
použitím Systém. Sbírky. Obecný;
použitím UnityEngine;

veřejnosttřídaCharacter_Control: MonoBehaviour {
prázdnotaStart() {
}

prázdnotaAktualizace() {
}
}

Krok 3: Použijte C# k vytvoření dopředného a zpětného pohybu s rychlostí

Před přidáním do funkcí v souboru skriptu deklarujte některé veřejné proměnné. První na řadě je pevné tělo pro uložení modelu hráče. Vyhlašte také plovák, abyste mohli sledovat rychlost pohybu. Tyto proměnné jsou v hlavní třídě, mimo jakékoli funkce.

veřejnost Pevné těleso;
veřejnostplovák Rychlost;

Dále je čas přidat jeden řádek kódu do funkce Start. To používá deklaraci GetComponent k přiřazení komponenty tuhého tělesa krychle k proměnné tuhého tělesa, kterou jste vytvořili.

prázdnotaStart() {
rigidbody = GetComponent < Rigidbody > ();
}

Nyní můžete přidat nějaký kód, který rozhýbe váš model hráče. Tento kód je pěkný a jednoduchý; potřebujete pouze dva příkazy if, jeden pro pohyb vpřed a jeden pro pohyb vzad. Můžete použít vstup. GetKey k určení, kdy je klávesa stisknuta. V tomto případě hledáte stisk kláves W a S.

Stisknutím kterékoli z těchto kláves přidáte sílu na tuhé těleso krychle pomocí tuhého tělesa. AddForce. Směr a rychlost přidané síly můžete vypočítat vynásobením její polohy v ose Z (transform.forward) proměnnou rychlosti. Neexistuje žádná třída transform.backward, kterou byste mohli použít pro zpětný pohyb, ale toho lze dosáhnout vynásobením transform.forward číslem -1.

-li (Vstup. GetKey("w")) {
tuhé těleso. AddForce (transform.forward * rychlost);
}

-li (Vstup. GetKey("s")) {
tuhé těleso. AddForce((transform.forward * -1) * Rychlost);
}

Uložte soubor C# a přejděte zpět do Unity. Najděte skript v podokně Projekt a přetáhněte jej na kostku modelu postavy v hierarchii, abyste přiřadili skript danému objektu. Když vyberete kostku, měli byste vidět skript jako komponentu v podokně Inspektor. Klikněte dovnitř proměnného rámečku tuhého tělesa a vyberte tuhé těleso své krychle.

Nyní můžete použít tlačítko Play ke spuštění hry a otestování kódu. Ale počkej! Vyskytl se problém; vaše kostka se bude spíše kutálet, než aby se pohybovala přímo vpřed. Vraťte se k inspektorovi krychle, najděte komponentu Pevné tělo a před dalším spuštěním hry zaškrtněte políčka Freeze Rotation na ose X a Z. Nyní by to mělo fungovat.

Krok 4: Použijte C# k vytvoření levého a pravého soustružení s kroutícím momentem

Na rozdíl od pohybu vzad a vpřed vyžaduje otáčení modelu hráče kostky sílu zvanou krouticí moment. K tomu potřebujete další proměnnou: public float pro přiřazení hodnoty točivého momentu.

veřejnostplovák točivý moment;

Kód pro odbočení doleva a doprava v tomto skriptu je velmi podobný kódu používanému pro pohyb vpřed a vzad. Existuje -li příkaz pro každý směr, který hledá stisk klávesy D (otočení doprava) nebo klávesy A (otočení vlevo).

Prvním krokem v každém příkazu if je určení směru odbočení pomocí vstupu. GetAxis metodu a přiřaďte výsledek proměnné float. Poté použijte tuhé těleso. Přidáním krouticího momentu použijete rotační sílu na model postavy krychle vynásobením krouticího momentu, otáčení a osy Z krychle.

-li (Vstup. GetKey("d")) {
plovák otočení = Vstup. GetAxis("Horizontální");
tuhé těleso. AddTorque (transform.up * moment * turn);
}

-li (Vstup. GetKey("A")) {
plovák otočení = Vstup. GetAxis("Horizontální");
tuhé těleso. AddTorque (transform.up * moment * turn);
}

Uložte si kód a vraťte se zpět do Unity a otestujte jej. Můžete upravit rychlost a dobu náběhu rotace modelu vašeho přehrávače výběrem krychle a úpravou proměnných hmotnosti, tažení a točivého momentu tuhého tělesa ve vašem skriptu. Tento příklad projektu se ustálí na 1 hmotě, 1 tažení a 2 kroutícím momentu.

Krok 5: Použijte C# k naprogramování skákání

Jako poslední prvek tohoto ovladače postav Unity je čas vytvořit svůj skok. Vytvoření skoku je složitější než ostatní základní ovládací prvky, na kterých jste pracovali, protože skok musí mít omezenou výšku. Začněte tím, že přidáte soukromou booleovskou proměnnou, abyste mohli sledovat, zda hráč skáče nebo ne.

soukromébool isJumping = Nepravdivé;

Tato proměnná neudělá nic bez příkazu, který ji otestuje. V tomto případě stačí základní příkaz if ke kontrole, zda je proměnná nepravdivá. Přidání stejné podmínky k dalšímu příkazu if zastaví hráče v pohybu během skoků.

-li (!isJumping) {
}

Přidání stejné podmínky k dalšímu příkazu if zastaví hráče v pohybu během skoků.

-li (Vstup. GetKey("w") && !isJumping) {
tuhé těleso. AddForce (transform.forward * rychlost);
}

V rámci příkazu !isJumping if potřebujete další příkaz if, tentokrát pro kontrolu stisknutí tlačítka skoku. Nastavení proměnné isJumping na hodnotu true je první věcí, kterou musíte udělat v tomto příkazu if, po kterém následuje deklarace rigidbody.angularVelocity k odstranění sil aktuálně působících na krychli.

Nyní můžete použít tuhé těleso. Deklarace AddForce pro přidání síly na krychli na její ose Z, čímž se vytvoří pohyb nahoru jako skok. Nakonec je čas použít deklaraci vyvolání k volání jiné funkce po 0,8 sekundách.

-li (!isJumping) {
-li (Vstup. GetKeyDown("prostor")) {
isJumping = skutečný;
tuhé těleso. AddForce (transform.up * rychlost * 120);
tuhé těleso.angularVelocity = Vektor3.nula;
Vyvolat("Move_Setter", 0.8 F);
}
}

Tato funkce nastaví proměnnou isJumping zpět na false, takže pohyb/skákání je možné znovu a zpoždění 0,8 sekundy zastaví její spuštění příliš brzy.

prázdnotaMove_Setter() {
isJumping = Nepravdivé;
}

Krok 6: Otestujte svůj kód ovladače postavy

Uložte soubor a vraťte se do Unity, abyste otestovali kód, který jste napsali. Stejně jako většina kompilátorů poskytuje Unity informace o chybách a dalších problémech s vaším kódem, aby bylo snazší zjistit, co byste mohli potřebovat změnit. Celý kód tohoto projektu si můžete prohlédnout na našem webu GitHub strana.

Vytváření ovladačů znaků Unity

Při vytváření ovladače postavy v Unity si můžete vybrat z celé řady různých přístupů. Jednou z možností je použití fyziky, ale pokud chcete, můžete také použít vestavěný systém ovládání postavy.

Prozkoumávání různých možností, jako je toto, je skvělý způsob, jak se dozvědět o nástrojích, jako je Unity.