Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Tegelaste kontroller aitab teil oma mängus lihtsat liikumisfüüsikat rakendada.

Unity3D märgikontrolleritele saate läheneda mitme nurga alt. Kui kasutate võimsate klasside ja funktsioonidega raamatukogu, võib füüsikapõhise märgikontrolleri loomine olla lõbus koht mänguarenduse alustamiseks.

1. samm: looge pleieri ja maastikuobjektidega stseen

Kui Unity on avatud ja olete loonud uue projekti, võite alustada, lisades oma stseenile paar objekti. Saate neid objekte luua mis tahes soovitud järjekorras, kuid olge ettevaatlik ja veenduge, et kasutate õigeid sätteid. Kuigi see projekt on põhiline, on see suurepärane viis alustage Unityga.

3D tasapinnaline objekt maastiku jaoks

Esimene objekt, mida oma stseeni lisada, on lennuk. Paremklõpsake hierarhiapaanil ja hõljutage kursorit selle kohal 3D objektja valige Lennuk nimekirjast. Saate reguleerida lennuki suurust, et pakkuda suuremat testimisala, kuid te ei pea sellega midagi muud tegema.

Cube Object Playeri mudel

Järgmiseks on aeg lisada stseenile kuubik, et tegutseda mängija mudelina. Paremklõpsake hierarhiapaanil ja hõljutage kursorit selle kohal 3D objektja valige Kuubik rippmenüüst. Asetage uus kuubik nii, et see asuks teie lisatud tasapinna kohal. Kuubist füüsikaobjektiks muutmiseks peate lisama ka jäiga keha komponendi.

Valige kuubik ja minge inspektori juurde. Kliki Lisa komponent paani allosas otsige rigidbody ja valige Jäik keha loendist, kui see ilmub. Märkige linnuke Kasutage gravitatsiooni märkeruut ja jätke ülejäänud seaded samaks.

Võite leida tasuta Unity varad võrgus oma projekti ellu viima.

Kolmanda isiku kaamera

Teie stseenil peaks juba olema kaamera, mida saate kasutada oma kolmanda isiku kaamerana. Asetage kaamera nii, et see oleks mugavas kolmanda isiku asendis kuubiku kohal. Minge hierarhiapaanile, enne kui lohistate ja kukutage kaamera kuubile, et luua vanema ja lapse suhe. Kui see on tehtud, järgib kaamera automaatselt teie kuubikut.

Kiire test

Kuigi teie stseenil pole veel koodi, saate testida seni tehtud tööd. Klõpsake nuppu Mängi Mängu laadimiseks nuppu ekraani ülaosas. Peaksite nägema, kuidas kuubik kukub ja maandub lennuki peale ning kaamera peaks kuubiku kukkumisel järgima.

2. samm: seadistage C#-fail

Nüüd on aeg luua C#-fail, et saaksite mõnda liikumist programmeerida. Minge jaotisse Projekt, paremklõpsake, hõljutage kursorit Loo ja valige loendist Kaust. Nimetage kaust Skriptid või midagi sarnast.

Liikuge oma uues kaustas ja korrake protsessi, kuid valige loendist C# Script. Saate anda sellele failile mis tahes nime, kuid see on ka selle põhifunktsiooni nimi. Veenduge, et teie uus C# näeks välja selline.

kasutades Süsteem. Kollektsioonid;
kasutades Süsteem. Kollektsioonid. Üldine;
kasutades UnityEngine;

avalikklassCharacter_Control: MonoBehaviour {
tühineAlusta() {
}

tühineVärskenda() {
}
}

3. samm: kasutage C#, et luua kiirusega edasi- ja tagasiliikumine

Enne skriptifaili funktsioonide lisamist deklareerige mõned avalikud muutujad. Esiteks on mängija mudeli salvestamiseks jäik keha. Samuti deklareerige ujuk, et jälgida liikumiskiirust. Need muutujad lähevad põhiklassi, väljaspool mis tahes funktsioone.

avalik Jäik keha jäik keha;
avalikujuk kiirus;

Järgmiseks on aeg lisada funktsioonile Start üks koodirida. See kasutab GetComponent deklaratsiooni, et määrata kuubi jäiga keha komponent teie loodud jäiga keha muutujale.

tühineAlusta() {
rigidbody = GetComponent < Rigidbody > ();
}

Nüüd saate lisada koodi, mis paneb teie mängija mudeli liikuma. See kood on kena ja lihtne; vajate lihtsalt kahte if-lauset, ühte edasiliikumiseks ja ühte tagasiliikumiseks. Saate kasutada sisendit. GetKey, et määrata, millal klahvi vajutatakse. Sel juhul otsite W- ja S-klahvi vajutamist.

Kummagi neist klahvidest vajutamine lisab jäiga keha abil kuubi jäigale kehale jõudu. AddForce. Lisatud jõu suuna ja kiiruse saate arvutada, korrutades selle Z-telje asukoha (teisendus.edasi) kiiruse muutujaga. Tagasi liikumiseks ei kasutata klassi transform.backward, kuid see on saavutatav, kui korrutada transform.forward väärtusega -1.

kui (Sisend. GetKey("w")) {
jäik keha. AddForce (transform.forward * kiirus);
}

kui (Sisend. GetKey("s")) {
jäik keha. AddForce((transform.forward * -1) * kiirus);
}

Salvestage C#-fail ja navigeerige tagasi Unity'i. Otsige üles skript projektipaanilt ja lohistage see hierarhias olevale märgimudelile Cube, et määrata skript sellele objektile. Kuubi valimisel peaksite nägema skripti komponendina Inspektori paanil. Klõpsake jäiga keha muutujakasti sees ja valige oma kuubiku jäik keha.

Nüüd saate mängu käivitamiseks ja koodi testimiseks kasutada nuppu Esita. Aga oota! On probleem; teie kuubik hakkab pigem veerema kui otse edasi liikuma. Minge tagasi kuubiku inspektori juurde, otsige üles komponent Rigidbody ja märkige enne mängu uuesti käivitamist X- ja Z-telje ruudud Freeze Rotation. Nüüd peaks see toimima.

4. samm: kasutage C#, et luua pöördemomendiga vasak- ja parempööre

Erinevalt edasi-tagasi liikumisest nõuab Cube'i mängija mudeli pööramine jõudu, mida nimetatakse pöördemomendiks. Selleks on vaja teist muutujat: pöördemomendi väärtuse määramiseks avalikku ujukit.

avalikujuk pöördemoment;

Selles skriptis vasakule ja paremale pööramise kood on väga sarnane sellele, mida kasutatakse ka edasi ja tagasi liikumiseks. Seal on an kui avaldus iga suuna jaoks, mis otsib kas D-klahvi (parempööre) või A-klahvi (vasakpööre) vajutusi.

Iga if-lause esimene samm on sisendi abil pöörde suuna määramine. GetAxis meetod ja määrake tulemus ujuvmuutujale. Pärast seda kasutage jäika korpust. AddTorque, et rakendada kuubiku märgimudelile pöörlemisjõudu, korrutades kuubi pöördemomendi, pöördemomendi ja Z-telje.

kui (Sisend. GetKey("d")) {
ujuk turn = sisend. GetAxis("Horisontaalne");
jäik keha. AddTorque (transform.up * pöördemoment * pööre);
}

kui (Sisend. GetKey("a")) {
ujuk turn = sisend. GetAxis("Horisontaalne");
jäik keha. AddTorque (transform.up * pöördemoment * pööre);
}

Salvestage oma kood ja minge tagasi Unitysse, et seda testida. Saate reguleerida oma mängija mudeli pöörlemise kiirust ja tõusuaega, valides kuubiku ja muutes oma skriptis jäiga keha massi-, tõmbe- ja pöördemomendi muutujaid. See näidisprojekt põhineb 1 massil, 1 takistusel ja 2 pöördemomendil.

5. samm: kasutage hüppamise programmeerimiseks C#

Selle Unity tegelaskuju kontrolleri viimase elemendina on aeg luua oma hüpe. Hüppe loomine on keerulisem kui teised põhilised juhtseadised, millega olete töötanud, kuna hüppe kõrgus peab olema piiratud. Alustuseks lisage privaatne tõeväärtusmuutuja, et jälgida, kas mängija hüppab või mitte.

privaatnebool isJumping = vale;

See muutuja ei tee midagi ilma selle testimise avalduseta. Sel juhul teeb asja ära põhiline if-lause, mis kontrollib, kas muutuja on väär. Sama tingimuse lisamine teisele liikumisele, kui avaldused takistavad mängijal hüpete ajal liikumist.

kui (!ishüppab) {
}

Sama tingimuse lisamine teisele liikumisele, kui avaldused takistavad mängijal hüpete ajal liikumist.

kui (Sisend. GetKey("w") && !ishüppamine) {
jäik keha. AddForce (transform.forward * kiirus);
}

!isJumping if-lauses vajate teist if-lauset, seekord hüppenupu klahvivajutuse kontrollimiseks. Muutuja isJumping määramine tõeseks on esimene asi, mida selles if-lauses teha, millele järgneb deklaratsioon rigidbody.angularVelocity, et eemaldada kuubile hetkel rakenduvad jõud.

Nüüd saate kasutada jäika korpust. AddForce'i deklaratsioon, et lisada jõudu kuubile selle Z-teljel, luues hüppe ülespoole liikumise. Lõpuks on aeg kasutada kutsumisdeklaratsiooni, et kutsuda mõni muu funktsioon 0,8 sekundi pärast.

kui (!ishüppab) {
kui (Sisend. GetKeyDown("ruum")) {
isJumping = tõsi;
jäik keha. AddForce (transform.up * kiirus * 120);
rigidbody.angularVelocity = Vector3.zero;
Invoke("Move_Setter", 0.8 f);
}
}

See funktsioon seab muutuja isJumping tagasi väärtusele False, nii et liikumine/hüppamine on taas võimalik ja 0,8-sekundiline viivitus takistab selle liiga vara käivitumist.

tühineMove_Setter() {
isJumping = vale;
}

6. samm: testige oma märgikontrolleri koodi

Salvestage oma fail ja minge tagasi Unitysse, et testida kirjutatud koodi. Nagu enamik kompilaatoreid, pakub Unity teavet teie koodi vigade ja muude probleemide kohta, et oleks lihtsam näha, mida peate muutma. Selle projekti täielikku koodi saate vaadata meie lehel GitHub lehel.

Ühtsuse märgikontrollerite loomine

Saate Unity'is märgikontrolleri loomisel valida erinevate lähenemisviiside hulgast. Füüsika kasutamine on üks võimalus, kuid soovi korral saate kasutada ka sisseehitatud märgikontrolleri süsteemi.

Selliste erinevate võimaluste uurimine on suurepärane võimalus selliste tööriistade kohta nagu Unity õppida.