Ovládač postavy vám môže pomôcť implementovať jednoduchú fyziku pohybu vo vašej hre.
K ovládačom postáv Unity3D môžete pristupovať z niekoľkých uhlov pohľadu. Ak používate knižnicu s výkonnými triedami a funkciami, vytvorenie ovládača postavy založeného na fyzike môže byť zábavným miestom na začatie vývoja hry.
Krok 1: Vytvorte scénu s objektmi hráča a terénu
Po otvorení Unity a vytvorení nového projektu môžete začať pridaním niekoľkých objektov do vašej scény. Tieto objekty môžete vytvárať v ľubovoľnom poradí, ale buďte opatrní, aby ste sa uistili, že používate správne nastavenia. Aj keď je tento projekt základný, je to skvelý spôsob začnite s Unity.
3D rovinný objekt pre terén
Prvý objekt, ktorý pridáte do svojej scény, je rovina. Kliknite pravým tlačidlom myši na tablu hierarchie a umiestnite kurzor myši 3D objekta vyberte Lietadlo zo zoznamu. Veľkosť roviny môžete upraviť, aby ste získali väčšiu testovaciu oblasť, ale nemusíte s tým robiť nič iné.
Model prehrávača objektov kocky
Ďalej je čas pridať na scénu kocku, ktorá bude pôsobiť ako model hráča. Kliknite pravým tlačidlom myši na tablu hierarchie a umiestnite kurzor myši 3D objekta vyberte Kocka z rozbaľovacej ponuky. Umiestnite novú kocku tak, aby sedela nad rovinou, ktorú ste tiež pridali. Musíte tiež pridať komponent tuhého telesa, aby ste z kocky urobili fyzikálny objekt.
Vyberte kocku a prejdite na inšpektora. Kliknite na Pridať komponent v spodnej časti tably vyhľadajte tuhé teleso a vyberte Pevné telo zo zoznamu, keď sa objaví. Zaškrtnite Použite gravitáciu začiarknite políčko a nechajte ostatné nastavenia tak, ako sú.
Môžeš nájsť voľný majetok Unity online na vylepšenie vášho projektu.
Fotoaparát tretej osoby
Vaša scéna by už mala mať kameru, ktorú môžete použiť ako fotoaparát tretej osoby. Umiestnite kameru tak, aby sedela v pohodlnej polohe tretej osoby nad vašou kockou. Pred presunutím kamery na kocku prejdite na tablu hierarchie, aby ste vytvorili vzťah rodič-dieťa. Kamera bude automaticky sledovať vašu kocku.
Rýchly test
Zatiaľ čo vaša scéna ešte nemá žiadny kód, môžete otestovať prácu, ktorú ste doteraz vykonali. Kliknite na hrať tlačidlo v hornej časti obrazovky na načítanie vašej hry. Mali by ste vidieť, ako kocka padá a pristáva na vrchu lietadla, a kamera by mala sledovať kocku, keď padá.
Krok 2: Nastavte súbor C#
Teraz je čas vytvoriť súbor C#, aby ste mohli začať programovať nejaký pohyb. Prejdite do časti Projekt, kliknite pravým tlačidlom myši, umiestnite kurzor myši na položku Vytvoriť a v zozname vyberte položku Priečinok. Pomenujte priečinok Scripts alebo niečo podobné.
Prejdite do nového priečinka a zopakujte proces, ale zo zoznamu vyberte C# Script. Tomuto súboru môžete dať ľubovoľný názov, ale bude to aj názov hlavnej funkcie v ňom. Uistite sa, že váš nový C# vyzerá takto.
použitím Systém. zbierky;
použitím Systém. zbierky. generický;
použitím UnityEngine;verejnostitriedaCharacter_Control: MonoBehaviour {
neplatnéŠtart() {
}
neplatnéAktualizovať() {
}
}
Krok 3: Použite C# na vytvorenie pohybu dopredu a dozadu s rýchlosťou
Pred pridaním funkcií do súboru skriptu deklarujte niektoré verejné premenné. Najprv je tu pevné telo na uloženie modelu prehrávača. Vyhláste tiež plavák na sledovanie rýchlosti pohybu. Tieto premenné patria do hlavnej triedy, mimo akýchkoľvek funkcií.
verejnosti Pevné teleso;
verejnostiplavák rýchlosť;
Ďalej je čas pridať jeden riadok kódu do funkcie Štart. Toto používa deklaráciu GetComponent na priradenie komponentu tuhého telesa kocky k premennej tuhého telesa, ktorú ste vytvorili.
neplatnéŠtart() {
tuhé telo = GetComponent < Rigidbody > ();
}
Teraz môžete pridať nejaký kód, ktorý rozhýbe váš model hráča. Tento kód je pekný a jednoduchý; potrebujete len dva príkazy if, jeden na pohyb vpred a jeden na pohyb dozadu. Môžete použiť vstup. GetKey na určenie, kedy sa stlačí kláves. V tomto prípade hľadáte stlačenie klávesov W a S.
Stlačením ktoréhokoľvek z týchto klávesov pridáte silu na tuhé teleso kocky pomocou tuhého telesa. AddForce. Smer a rýchlosť pridanej sily môžete vypočítať vynásobením jej polohy osi Z (transform.forward) premennou rýchlosti. Neexistuje žiadna trieda transform.backward, ktorú by ste mohli použiť na spätný pohyb, ale to je možné dosiahnuť vynásobením transform.forward číslom -1.
ak (Vstup. GetKey("w")) {
tuhé teleso. AddForce (transform.forward * rýchlosť);
}
ak (Vstup. GetKey("s")) {
tuhé teleso. AddForce((transform.forward * -1) * rýchlosť);
}
Uložte súbor C# a prejdite späť do Unity. Nájdite skript na paneli Projekt a presuňte ho na kocku s modelom znakov v rámci hierarchie, aby ste priradili skript danému objektu. Keď vyberiete kocku, mali by ste vidieť skript ako komponent v paneli Inšpektor. Kliknite do poľa premennej tuhého telesa a vyberte tuhé teleso svojej kocky.
Teraz môžete použiť tlačidlo Play na spustenie hry a otestovanie kódu. Ale počkaj! Vyskytol sa problém; vaša kocka sa bude skôr kotúľať, než sa pohybovať priamo vpred. Vráťte sa k inšpektorovi kocky, nájdite komponent Rigidbody a pred opätovným spustením hry zaškrtnite políčka Freeze Rotation na osi X a Z. Teraz by to malo fungovať.
Krok 4: Použite C# na vytvorenie ľavého a pravého otáčania s krútiacim momentom
Na rozdiel od pohybu dozadu a dopredu, otáčanie modelu hráča kocky vyžaduje silu nazývanú krútiaci moment. Na to potrebujete ďalšiu premennú: verejný float na priradenie hodnoty krútiaceho momentu.
verejnostiplavák krútiaci moment;
Kód na odbočenie doľava a doprava v tomto skripte je veľmi podobný kódu, ktorý sa používa na pohyb dopredu a dozadu. Existuje ak príkaz pre každý smer, ktorý hľadá stlačenie klávesu D (otočenie doprava) alebo klávesu A (otočenie vľavo).
Prvým krokom v každom príkaze if je určenie smeru odbočenia pomocou vstupu. Metóda GetAxis a výsledok priraďte do premennej float. Potom použite tuhé teleso. Pridajte krútiaci moment, ak chcete použiť rotačnú silu na model kocky vynásobením krútiaceho momentu, otáčania a osi Z kocky.
ak (Vstup. GetKey("d")) {
plavák otočenie = Vstup. GetAxis("horizontálne");
tuhé teleso. AddTorque (transform.up * krútiaci moment * otočenie);
}
ak (Vstup. GetKey("a")) {
plavák otočenie = Vstup. GetAxis("horizontálne");
tuhé teleso. AddTorque (transform.up * krútiaci moment * otočenie);
}
Uložte si kód a vráťte sa do Unity, aby ste ho otestovali. Môžete upraviť rýchlosť a čas nábehu rotácie vášho modelu prehrávača výberom kocky a úpravou premenných hmotnosti, ťahania a krútiaceho momentu tuhého telesa v skripte. Tento príklad projektu sa ustáli na 1 hmote, 1 ťahu a 2 krútiacom momente.
Krok 5: Použite C# na programovanie skákania
Ako posledný prvok tohto ovládača postavy Unity je čas vytvoriť si skok. Vytvorenie skoku je zložitejšie ako ostatné základné ovládacie prvky, na ktorých ste pracovali, keďže skok musí mať obmedzenú výšku. Začnite pridaním súkromnej booleovskej premennej na sledovanie, či hráč skáče alebo nie.
súkromnébool isJumping = falošný;
Táto premenná neurobí nič bez príkazu na jej testovanie. V tomto prípade postačí základný príkaz if na kontrolu, či je premenná nepravdivá. Pridaním rovnakej podmienky do druhého pohybu príkazov if zastavíte hráča v pohybe počas skokov.
ak (!isJumping) {
}
Pridaním rovnakej podmienky do druhého pohybu príkazov if zastavíte hráča v pohybe počas skokov.
ak (Vstup. GetKey("w") && !isJumping) {
tuhé teleso. AddForce (transform.forward * rýchlosť);
}
V rámci príkazu !isJumping if potrebujete ďalší príkaz if, tentoraz na kontrolu stlačenia tlačidla skoku. Nastavenie premennej isJumping na hodnotu true je prvá vec, ktorú treba urobiť v tomto príkaze if, po ktorom nasleduje deklarácia rigidbody.angularVelocity na odstránenie síl, ktoré sú aktuálne aplikované na kocku.
Teraz môžete použiť pevné teleso. Vyhlásenie AddForce na pridanie sily do kocky na jej osi Z, čím sa vytvorí pohyb nahor ako skok. Nakoniec je čas použiť deklaráciu vyvolania na zavolanie inej funkcie po 0,8 sekunde.
ak (!isJumping) {
ak (Vstup. GetKeyDown("priestor")) {
isJumping = pravda;
tuhé teleso. AddForce (transform.up * rýchlosť * 120);
tuhé teleso.uhlováVelocity = Vektor3.nula;
Vzývať("Move_Setter", 0.8 f);
}
}
Táto funkcia nastaví premennú isJumping späť na hodnotu false, takže pohyb/skákanie je opäť možné a oneskorenie 0,8 sekundy zastaví jej spustenie príliš skoro.
neplatnéMove_Setter() {
isJumping = falošný;
}
Krok 6: Otestujte si kód ovládača postavy
Uložte súbor a vráťte sa do Unity, aby ste otestovali kód, ktorý ste napísali. Ako väčšina kompilátorov, aj Unity poskytuje informácie o chybách a iných problémoch s vaším kódom, aby ste ľahšie videli, čo by ste mohli potrebovať zmeniť. Celý kód tohto projektu si môžete pozrieť na našej stránke GitHub stránku.
Vytváranie ovládačov znakov Unity
Pri vytváraní ovládača postavy v Unity si môžete vybrať z množstva rôznych prístupov. Jednou z možností je použitie fyziky, ale ak chcete, môžete použiť aj vstavaný systém ovládania postavy.
Skúmanie rôznych možností, ako je toto, je skvelý spôsob, ako sa dozvedieť o nástrojoch, ako je Unity.