La început, adăugați un nou script personajului dvs. Denumiți-l Script PlayerMovement. Mai întâi avem nevoie de o referință de la Scriptul de mișcare a jucătorului la Controlerul de caractere. Scriptului i se spune să miște personajul.
La început creăm o variabilă:
controler public CharacterController2D;
Apoi aveți opțiunea de a trage controlerul de caractere într-un spațiu liber.
Direcția și viteza mișcării trebuie definite pentru mișcare. Pentru aceasta aveți nevoie de informații de la player:
Tasta săgeată stânga sau A = 1
Tasta săgeată dreapta sau D = -1
Este la fel cu controlerul.
horizontalMove = Input.GetAxisRaw ("Orizontal");
Zona de actualizare organizează intrarea de la player.
FixedUpdate este folosit pentru fizică. Această funcție este necesară.
Creați o altă variabilă:
float horizontalMove = 0f;
FixedUpdate mută personajul.
void FixedUpdate()
{
controller.Move (horizontalMove, false, false);
}
Primul fals înseamnă că jucătorul nu ar trebui să se ghemuiască și al doilea pentru că nu ar trebui să sară.
O definiție pentru Mutare este necesară în scriptul controlerului playerului:
public void Move (mișcare float, bool se ghemui, bool jump)
{}
Ca următoare variabilă aveți nevoie:
public float runSpeed = 40f;
Intrarea de la player este înmulțită cu viteza de rulare:
horizontalMove = Input.GetAxisRaw ("Horizontal") * runSpeed;
Dacă jucătorul se mișcă la stânga și la dreapta, mișcarea va fi la -40 și 40.
De asemenea, mișcarea este înmulțită cu Time.fixedDeltaTime.
Time.fixedDeltaTime este timpul de când a fost apelată ultima funcție FixedUpdate. Aceasta specifică faptul că mișcarea are loc cu aceeași cantitate, indiferent de cât de des este apelată funcția. Astfel, viteza personajului este aceeași, indiferent de sisteme sau platforme.
Dacă pionul cade, se poate deplasa puțin în pământ.
De aceea, în Rigidbody2D, detectarea coliziunii se schimbă de la discret la continuu.
Pentru sărituri, se verifică dacă apăsăm sau nu tasta de salt:
if (input.GetButtonDown ("Salt"))
{
sari = adevarat;
}
Acest lucru ar trebui făcut și în funcția FixedUpdate. Informațiile sunt transferate cu o variabilă booleană:
bool jump = fals;
Variabila jump este adăugată și sub FixedUpdate.
Când este apăsat butonul de salt, scriptul PlayerMovement redirecționează către controlerul pe care dorim să-l sărim. După aceea va fi din nou
salt = fals;
Acest lucru trebuie definit deoarece nu vrem să trecem înainte pentru totdeauna.
O altă problemă este că atunci când personajul încearcă să sară pe o platformă, acesta rămâne blocat acolo. Personajul ar trebui apoi să alunece în jos și să cadă pe acesta. Pentru aceasta este necesar un material de fizică. Sub Proiect, faceți clic dreapta pe Creare -> PhysicsMaterial2D
Denumiți-o Alunecos. Setați Friction and Bounciness la 0. Luați PhysicsMaterial și trageți-l pe materialul din BoxCollider al jucătorului.
Dacă ați definit mai multe colizoare pentru protagonist, puteți atribui materialul fizic celorlalți colizori.
Aspectul tastaturii este definit prin Unity InputManager. Puteți găsi acest lucru în Setările proiectului.
Faceți clic dreapta pe butonul de salt și alegeți Duplicate Array Element. Denumiți-l „Crouch”.
Dacă jucătorii doresc să se joace cu tastele săgeată, pur și simplu definiți un buton alternativ.
Repetați pașii de la sărituri la ghemuit:
Când butonul pentru ghemuire este eliberat, personajul ar trebui, de asemenea, să înceteze ghemuirea. Deci nu funcționează exact ca săriturile. Dacă jucătorii doresc să se joace cu tastele săgeți, pur și simplu definiți un buton alternativ.
Adăugați următoarele în funcția de actualizare:
else if (Input.GetButtonUp ("Crouch"))
{
ghemui = fals;
}
Pentru ca secțiunile corespunzătoare să apară în controlerul de caractere, trebuie să le comutați de la privat la public:
Trage de asta Accelerator de particulecare ar trebui dezactivat în câmpul corespunzător. Dacă există un „plafon” deasupra ta, personajul tău va încetini când apăsați butonul de ghemuire.