Ste nový v Unity? Chcete sa naučiť, ako prijímať vstupy od hráčov a presúvať postavy po obrazovke? Vytvorili sme túto príručku, aby sme vám predstavili tri rôzne spôsoby, ktorými môžete ovládať pohyb hráčov v Unity.
Či už ste v kódovaní nováčik alebo máte nejaké skúsenosti, tento tutoriál C# vás postaví na nohy a vaše postavy na ich.
Začnime.
Pohyb hráča v jednote: zbieranie vstupov
Najprv musíte vedieť, ako zachytiť vstupy od používateľa a transformovať ich na pohyb v hre. Unity to robí celkom jednoduchým, pokiaľ viete, kde hľadať.
Pri otvorenom Unity kliknite na Upraviť na hornom paneli nástrojov. Teraz vyberte Nastavenia projektu. Z ľavého zoznamu vyberte Správca vstupov. Vyberte Sekery, čím sa vyplní zoznam vstupných hodnôt. Budete sa chcieť pozrieť Horizontálne a Vertikálne pre základný pohyb.
Tieto osi budete používať spolu s Vstup. GetAxisRaw(); pre základný pohyb v ďalšej časti.
Pohyb hráča v jednote pomocou pevného telesa a urýchľovača
Teraz, keď poznáte názvy osí, môžete ich použiť na ovládanie pohybu hráča.
Vo vašom projekte Unity Hierarchia zobraziť, kliknite pravým tlačidlom myši a vyberte 3D objekt > Kapsula aby ste vytvorili to, čomu dáte pohyb. Nezabudnite použiť rovnakú taktiku na vytvorenie pôdy Lietadlo aby vaša kapsula stála.
Uistite sa, že ste resetovali Transformovať hodnotu oboch predmetov a posuňte svoju kapsulu tak, aby stála na lietadle. Pre ľahkú identifikáciu premenujte svoju kapsulu na niečo ako „Prehrávač“.
Súvisiace: 5 jazykov vývoja hier Unity: Ktoré by ste sa mali naučiť?
Klikni na Hráč objekt a, v inšpektor zobraziť, prejdite nadol Pridať komponent. Pridaj Pevné teloa potom pridajte ďalší komponent ako a Zrážač kapsúl tentokrát. Tieto komponenty budete potrebovať na pridanie fyziky, a teda aj pohybu Hráč.
Potom kliknite pravým tlačidlom myši do svojho Skriptá priečinok a Vytvorte nový C# skript. Pomenujte tento skript nejako v zmysle „Pohyb hráča“. Ak plánujete pridať viacero typov pohybu pre rôzne postavy alebo typy ovládačov, budete chcieť vytvoriť veľa rôznych skriptov pre každý typ pohybu. Zatiaľ sa zameriame na základy a použijeme jeden skript.
Pozri tiež: Čo je modulárne programovanie v jednote a prečo je dôležité?
Dvakrát kliknite na skript, aby ste ho otvorili. Stretnete sa s predvoleným skriptom Unity:
pomocou systému. zbierky;
pomocou systému. zbierky. generický;
pomocou UnityEngine;
verejná trieda Pohyb hráča: MonoBehaviour
{
// Štart sa volá pred prvou aktualizáciou rámca
void Start()
{}
// Aktualizácia sa volá raz za snímku
void Update()
{
}
}
Môžete vymazať pomocou systému. zbierky; a použitímsystém. zbierky. generický; pretože nie sú potrebné pre tento skript.
S tým mimo, zamerajte sa na
public class Pohyb hráča: MonoBehaviour {
na Teraz. Vo vnútri otváracej kučeravej ortézy vytvorte a verejný plavák premenná s názvom rýchlosť alebo niečo podobné. Toto rýchlosť premenná je multiplikátor, ktorý bude kontrolovať, ako rýchlo náš Hráč sa po nejakom ďalšom programovaní presunie. Zatiaľ nastavte rýchlosť rovná niečomu podobnému 10f.
Tiež musíte Unity dovoliť, aby v tomto skripte bolo možné manipulovať s pevným telom. To sa vykonáva pomocou kľúčového slova Pevné telo a názov premennej – vyberieme si rb.
verejná trieda Pohyb hráča: MonoBehaviour
{
rýchlosť verejného plaváka = 10f; //Ovláda násobiteľ rýchlosti
Pevné teleso rb; //Povie skriptu, že existuje pevné telo, môžeme použiť premennú rb na odkazovanie v ďalšom skripte
To je všetko, čo potrebujete pridať do tejto sekcie. Teraz prejdite na void Start(). Po spustení hry je potrebné nastaviť rb premenná rovná Pevné telo na Hráč ako:
void Start()
{
rb = GetComponent(); //rb sa rovná tuhému telesu prehrávača
}
Teraz sa pozrite na void Update() funkciu. Toto je funkcia, ktorú budete používať na neustále získavanie vstupov z klávesníc, ovládačov atď. Pamätajte si, keď ste skontrolovali Nastavenia projektu pre Vstupné osi? Tu ich využijete.
void Update()
{
float xMove = Vstup. GetAxisRaw("Horizontal"); // d kľúč zmení hodnotu na 1, kľúč zmení hodnotu na -1
float zMove = Vstup. GetAxisRaw("Vertikálne"); // kláves w zmení hodnotu na 1, kláves s zmení hodnotu na -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * rýchlosť; // Vytvorí rýchlosť v smere hodnoty rovnajúcej sa stlačeniu klávesu (WASD). rb.velocity.y sa zaoberá pádom + skokom nastavením rýchlosti na y.
}
Nerobte si starosti, ak sa cítite ohromení skokom v kóde; vysvetlíme si to krok za krokom. Najprv vytvorte a plavák premenná s názvom ako xMovea nastavte ju na rovnakú hodnotu Vstup. GetAxisRaw("Horizontal");
Vstup. GetAxisRaw(); je spôsob, akým Unity zaznamenáva vstupy prehrávača z Sekery ste našli v Nastavenia projektu. Viac si o tom môžete prečítať v Oficiálna dokumentácia Unity. "horizontálne" pochádza z Horizontálna os meno v Jednote. Táto os ovláda pohyb doľava a doprava pomocou kláves „a“ a „d“.
Ako už asi tušíte, float zMove = Vstup. GetAxisRaw("Vertikálne");
robí to isté, ale pre klávesy "w" a "s".
Súvisiace: Najlepšie Unity 3D tutoriály pre začiatočníkov
Ďalej to položíte rýchlosť premennú, ktorú ste vytvorili do hry, a skompletizujte posledný kúsok skladačky pre pohyb hráča v Unity.
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * rýchlosť; // Vytvorí rýchlosť v smere hodnoty rovnajúcej sa stlačeniu klávesu (WASD). rb.velocity.y sa zaoberá pádom + skokom nastavením rýchlosti na y.
Vráťte sa do Unity's inšpektor pohľad na Hráč objekt. Pozrite sa na Pevné telo—pod Info, uvidíte hodnotu Rýchlosť. Toto je hodnota, na ktorú zacieľujete rb.rýchlosť.
new Vector3(xMove, rb.velocity.y, zMove) * rýchlosť, vytvorí nový vektor s dodanými hodnotami x, y a z a potom vynásobí hodnotu vektora rýchlosť.
Uistite sa, že pretiahnete Pohyb hráča skript na Hráč objekt v Jednote, a je to! Celkovo máte funkčný C# skript, ktorý preberá vstupy od hráča a transformuje ich do pohybu postavy v Unity.
Tu je hotový kód:
pomocou UnityEngine;
verejná trieda Pohyb hráča: MonoBehaviour
{
rýchlosť verejného plaváka = 10f; //Ovláda násobiteľ rýchlosti
Pevné teleso rb; //Povie skriptu, že existuje pevné telo, môžeme použiť premennú rb na odkazovanie v ďalšom skripte// Štart sa volá pred prvou aktualizáciou rámca
void Start()
{
rb = GetComponent(); //rb sa rovná tuhému telesu prehrávača
}// Aktualizácia sa volá raz za snímku
void Update()
{
float xMove = Vstup. GetAxisRaw("Horizontal"); // d kľúč zmení hodnotu na 1, kľúč zmení hodnotu na -1
float zMove = Vstup. GetAxisRaw("Vertikálne"); // kláves w zmení hodnotu na 1, kláves s zmení hodnotu na -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * rýchlosť; // Vytvorí rýchlosť v smere hodnoty rovnajúcej sa stlačeniu klávesu (WASD). rb.velocity.y sa zaoberá pádom + skokom nastavením rýchlosti na y.
}
}
Poznámka: Ak zistíte, že vaša postava máva viac ako čokoľvek iné, nezabudnite uzamknúť rotáciu hráča v inšpektor.
Učte sa a urobte viac v jednote
Teraz, keď viete, ako naprogramovať pohyb hráča v Unity s komponentmi Rigidbody a Collider, čo sa naučíte ďalej? Možno by bolo zábavné a pútavé rozšíriť váš ovládač pohybu a pridať veci ako posúvanie, dvojité skákanie a ďalšie.
Unity Learn je preplnené zaujímavými témami, ktoré vám pomôžu rozvinúť vaše zručnosti v oblasti vývoja hier. Veríme, že jedným z najdôležitejších faktorov pri rozširovaní vašich vedomostí o programovaní je naučiť sa každý deň niečo nové. Zostaňte zvedaví a šťastný hacking!
Chcete začať vyvíjať svoje vlastné hry? Unity Learn je najlepší a najjednoduchší spôsob, ako sa naučiť a zvládnuť to, čo potrebujete vedieť.
Prečítajte si ďalej
- Programovanie
- Vývoj hier
- Jednota
- Programovanie
Marcus je technický novinár na voľnej nohe a junior editor pre programovanie na MUO. Je celoživotným študentom, nadšeným vývojárom front-endov a autorom poviedok s viac ako 3-ročnými skúsenosťami s vývojom prózy, vďaka ktorej sú čitatelia informovaní.
prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!
Kliknutím sem sa prihlásite na odber