Za početak dodajte novu skriptu svom liku. Nazovite ga PlayerMovement Script. Prvo nam je potrebna referenca iz skripte kretanja igrača na kontroler karaktera. U scenariju je rečeno da lik treba pomjeriti.
Za početak kreiramo varijablu:
javni CharacterController2D kontroler;
Zatim se otvara opcija za povlačenje kontrolera znakova u slobodan prostor.
Za kretanje moraju biti definirani smjer i brzina kretanja. Za ovo vam je potreban unos od plejera:
Tipka sa strelicom lijevo ili A = 1
Desna tipka sa strelicom ili D = -1
Isto je i sa kontrolerom.
horizontalMove = Input.GetAxisRaw(“Horizontalno”);
Područje ažuriranja organizira unos sa plejera.
FixedUpdate se koristi za fiziku. Ova funkcija je obavezna.
Kreirajte drugu varijablu:
float horizontalnoMove = 0f;
FixedUpdate pomera karakter.
void FixedUpdate()
{
controller.Move (horizontalno premještanje, lažno, lažno);
}
Prvi netačan znači da igrač ne treba da se sagne, a drugi da ne bi trebao skočiti.
Definicija za Move je potrebna u skripti Player Controller:
public void Move (pomak plutanja, bool čučanj, bool skok)
{}
Sljedeća varijabla koja vam je potrebna je:
javni float runSpeed = 40f;
Unos igrača se množi sa brzinom trčanja:
horizontalMove = Input.GetAxisRaw ("Horizontalno") * runSpeed;
Ako se igrač pomiče lijevo i desno, kretanje je -40 i 40.
Pokret se dodatno množi sa Time.fixedDeltaTime.
Time.fixedDeltaTime je vrijeme od posljednjeg pozivanja funkcije FixedUpdate. Ovo određuje da će se pomicanje dogoditi za isti iznos bez obzira koliko puta je funkcija pozvana. To znači da je brzina lika ista, bez obzira na sistem ili platformu.
Ako lik padne, može se malo pomaknuti u tlo.
Zato se u Rigidbody2D detekcija sudara mijenja iz diskretne u kontinuiranu.
Za skakanje, provjerava da li smo pritisnuli dugme za skok ili ne:
if (input.GetButtonDown(“Skoči”))
{
skok = tačno;
}
Ovo bi se također trebalo dogoditi u funkciji FixedUpdate. Informacije se prenose pomoću Booleove varijable:
bool skok = false;
Varijabla skoka je također dodana pod FixedUpdate.
Kada se pritisne dugme za skok, skripta PlayerMovement prelazi na kontroler koji želimo da skočimo. Nakon toga će biti ponovo
skok = false;
Ovo treba definirati jer ne želimo vječno skakati naprijed.
Drugi problem je što kada lik pokuša da skoči na platformu, on se tamo zaglavi. Međutim, lik bi tada trebao kliziti dolje i pasti. Za to je potreban materijal iz fizike. U okviru Projekta kliknite desnim tasterom miša na Create–>PhysicsMaterial2D
Nazovite to Slippery. Postavite Friction and Bounciness na 0. Uzmite PhysicsMaterial i prevucite ga na BoxCollider materijal igrača.
Ako ste definirali nekoliko sudarača za protagonista, također možete dodijeliti materijal fizike drugim sudaračima.
Raspored tastature je definisan preko Unity-ovog InputManager-a. Ovo možete pronaći pod postavkama projekta.
Kliknite desnim tasterom miša na dugme za skok i izaberite Duplicate Array Element. Nazovite ga "Crouch".
Ako igrači žele igrati pomoću tipki sa strelicama, jednostavno definirajte alternativno dugme.
Ponovite korake od skakanja do saginjanja:
Kada se dugme patka otpusti, lik bi takođe trebao prestati da se savija. Zato to ne funkcioniše baš kao skakanje. Ako igrači žele da igraju sa strelicama, jednostavno definišite alternativno dugme. kao Skok:
Dodajte sljedeće u funkciju ažuriranja:
else if (Input.GetButtonUp ("Crouch"))
{
crouch = lažno;
}
Da bi se odgovarajući odeljci pojavili u Kontroloru znakova, morate ih prebaciti iz privatnih u javne:
Povuci to colliderkoje treba deaktivirati u odgovarajućem polju. Ako postoji „plafon“ iznad vas, vaš lik će usporiti kada pritisnete dugme za čučanje.