Jste v Unity nový? Chcete se naučit, jak přijímat vstupy od hráčů a pohybovat postavami po obrazovce? Vytvořili jsme tohoto průvodce, abychom předvedli tři různé způsoby, jak můžete ovládat pohyb hráče v Unity.
Ať už s kódováním začínáte nebo máte nějaké zkušenosti, tento tutoriál C# vás postaví na nohy a vaše postavy na jejich.
Začněme.
Pohyb hráče v jednotě: Sbírání vstupů
Nejprve musíte vědět, jak zachytit vstupy od uživatele a transformovat je do pohybu ve hře. Unity to docela usnadňuje, pokud víte, kde hledat.
S otevřenou Unity klikněte na Upravit na horním panelu nástrojů. Nyní vyberte Nastavení projektu. Z levého seznamu vyberte Správce vstupů. Vybrat Sekery, čímž se vyplní seznam vstupních hodnot. Budete se chtít podívat Horizontální a Vertikální pro základní pohyb.
Tyto osy budete používat spolu s Vstup. GetAxisRaw(); pro základní pohyb v další části.
Pohyb hráče v jednotě pomocí pevného těla a urychlovače
Nyní, když znáte názvy os, můžete je použít k ovládání pohybu hráče.
Ve vašem projektu Unity
Hierarchie zobrazit, kliknout pravým tlačítkem a vybrat 3D objekt > Kapsle vytvořit to, čemu dáte pohyb. Ujistěte se, že použijete stejnou taktiku k vytvoření půdy Letadlo aby vaše kapsle stála.Ujistěte se, že jste resetovali Přeměnit hodnotu obou objektů a posuňte svou kapsli tak, aby stála v Rovině. Přejmenujte svou kapsli na něco jako "Player" pro snadnou identifikaci.
Příbuzný: 5 jazyků Unity pro vývoj her: Které byste se měli naučit?
Klikněte na Hráč objektu a v Inspektor zobrazit, přejděte dolů Přidat komponentu. Přidat Pevné těloa poté přidejte další komponentu jako a Urychlovač kapslí tentokrát. Tyto komponenty budete potřebovat k tomu, abyste přidali fyzičku, a tedy i pohyb Hráč.
Poté klikněte pravým tlačítkem do svého Skripty složku a Vytvořit nový C# skript. Pojmenujte tento skript nějak ve smyslu "Pohyb hráče". Pokud plánujete přidat více typů pohybu pro různé postavy nebo typy ovladačů, budete chtít vytvořit mnoho různých skriptů pro každý typ pohybu. Prozatím se zaměříme na základy a použijeme jeden skript.
Viz také: Co je modulární programování v Unity a proč je důležité?
Poklepáním na skript jej otevřete. Setkáte se s výchozím skriptem Unity:
pomocí systému. Sbírky;
pomocí systému. Sbírky. Obecný;
pomocí UnityEngine;
veřejná třída Pohyb hráče: MonoBehaviour
{
// Start je volán před první aktualizací rámce
void Start()
{}
// Aktualizace je volána jednou za snímek
void Update()
{
}
}
Můžete smazat pomocí systému. Sbírky; a použitímSystém. Sbírky. Obecný; protože pro tento skript nejsou potřeba.
S tím z cesty se soustřeďte na
public class Pohyb hráče: MonoBehaviour {
pro teď. Uvnitř otevírací složené závorky vytvořte a veřejný plovák proměnná pojmenovaná Rychlost nebo něco podobného. Tento Rychlost proměnná je multiplikátor, který bude řídit, jak rychle naše Hráč se po nějakém dalším programování přesune. Prozatím nastavte Rychlost rovná se něčemu podobnému 10f.
Také musíte Unity dovolit, aby v tomto skriptu bylo možné manipulovat s pevným tělem. To se provádí pomocí klíčového slova Pevné tělo a název proměnné – vybereme rb.
veřejná třída Pohyb hráče: MonoBehaviour
{
rychlost veřejného plováku = 10f; //Ovládá multiplikátor rychlosti
Pevné těleso rb; //Říká skriptu, že existuje tuhé tělo, můžeme použít proměnnou rb, abychom na něj odkazovali v dalším skriptu
To je vše, co potřebujete k této sekci přidat. Nyní přejděte k void Start(). Při spuštění hry je potřeba nastavit rb proměnná rovná Pevné tělo na Hráč jako tak:
void Start()
{
rb = GetComponent(); //rb se rovná tuhému tělesu na přehrávači
}
Nyní se podívejte na void Update() funkce. Toto je funkce, kterou budete používat k neustálému získávání vstupů z kláves, ovladačů atd. Pamatujte si, když jste zkontrolovali Nastavení projektu pro Vstupní osy? Zde je využijete.
void Update()
{
float xMove = Vstup. GetAxisRaw("Horizontal"); // d klíč změní hodnotu na 1, klíč změní hodnotu na -1
float zMove = Vstup. GetAxisRaw("Vertikální"); // klávesa w změní hodnotu na 1, klávesa s změní hodnotu na -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * rychlost; // Vytvoří rychlost ve směru hodnoty rovné stisku klávesy (WASD). rb.velocity.y se zabývá pádem + skokem nastavením rychlosti na y.
}
Nedělejte si starosti, pokud se cítíte ohromeni skokem v kódu; vysvětlíme si to krok za krokem. Nejprve vytvořte a plovák proměnná s názvem jako xMovea nastavte ji na hodnotu Vstup. GetAxisRaw("Horizontal");
Vstup. GetAxisRaw(); je způsob, jakým Unity zaznamenává vstupy přehrávače z Sekery jste našli v Nastavení projektu. Více si o tom můžete přečíst v Oficiální dokumentace Unity. "Horizontální" pochází z Horizontální osa jméno v Jednotě. Tato osa ovládá pohyb doleva a doprava pomocí kláves „a“ a „d“.
Jak už asi tušíte, float zMove = Vstup. GetAxisRaw("Vertikální");
dělá to samé, ale pro klávesy "w" a "s".
Příbuzný: Nejlepší Unity 3D tutoriály pro začátečníky
Dále to položíte Rychlost proměnnou, kterou jste vytvořili do hry, a dokončete poslední dílek skládačky pro pohyb hráče v Unity.
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * rychlost; // Vytvoří rychlost ve směru hodnoty rovné stisku klávesy (WASD). rb.velocity.y se zabývá pádem + skokem nastavením rychlosti na y.
Vraťte se do Unity's Inspektor pohled pro Hráč objekt. Podívejte se na Pevné tělo-pod Info, uvidíte hodnotu Rychlost. Toto je hodnota, se kterou cílíte rb.rychlost.
new Vector3(xMove, rb.velocity.y, zMove) * rychlost, vytvoří nový vektor s dodanými hodnotami x, y a z a poté vynásobí hodnotu vektoru Rychlost.
Ujistěte se, že jste přetáhli Pohyb hráče skript na Hráč objekt v Unity, a je to! Celkově máte funkční C# skript, který přebírá vstupy od hráče a transformuje je do pohybu postavy v Unity.
Zde je hotový kód:
pomocí UnityEngine;
veřejná třída Pohyb hráče: MonoBehaviour
{
rychlost veřejného plováku = 10f; //Ovládá multiplikátor rychlosti
Pevné těleso rb; //Říká skriptu, že existuje tuhé tělo, můžeme použít proměnnou rb, abychom na něj odkazovali v dalším skriptu// Start je volán před první aktualizací rámce
void Start()
{
rb = GetComponent(); //rb se rovná tuhému tělesu na přehrávači
}// Aktualizace je volána jednou za snímek
void Update()
{
float xMove = Vstup. GetAxisRaw("Horizontal"); // d klíč změní hodnotu na 1, klíč změní hodnotu na -1
float zMove = Vstup. GetAxisRaw("Vertikální"); // klávesa w změní hodnotu na 1, klávesa s změní hodnotu na -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * rychlost; // Vytvoří rychlost ve směru hodnoty rovné stisku klávesy (WASD). rb.velocity.y se zabývá pádem + skokem nastavením rychlosti na y.
}
}
Poznámka: Pokud zjistíte, že vaše postava plácá víc než cokoli jiného, nezapomeňte zablokovat rotaci hráče v Inspektor.
Učte se a získejte více v jednotě
Nyní, když víte, jak naprogramovat pohyb hráče v Unity s komponenty Rigidbody a Collider, co se naučíte dál? Možná by bylo zábavné a poutavé rozšířit svůj pohybový ovladač a přidat věci jako klouzání, dvojité skákání a další.
Unity Learn je přeplněný zajímavými tématy, která posouvají vaše dovednosti v oblasti vývoje her. Věříme, že jedním z nejdůležitějších faktorů při rozšiřování vašich znalostí programování je naučit se každý den něco nového. Zůstaňte zvědaví a šťastné hackování!
Chcete začít vyvíjet vlastní hry? Unity Learn je nejlepší a nejjednodušší způsob, jak se naučit a zvládnout to, co potřebujete vědět.
Přečtěte si další
- Programování
- Vývoj her
- Jednota
- Programování
Marcus je technický novinář na volné noze a junior editor pro programování na MUO. Je celoživotním studentem, fanouškem front-end vývojářem a autorem povídek s více než 3 lety zkušeností s vývojem prózy, která udržuje čtenáře v obraze.
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem