Unity3d - creați mișcarea de caractere și animația sa! Partea 2 (platformer) - crearea de jocuri - director

Salut din nou. Aceasta este a doua parte a articolului despre mișcarea personajului în Unity3D. Din nou, acest tutorial va fi un exemplu. Aici analizăm mișcarea platformerului. Dar acum, fără animație. Puteți citi despre el în articolul precedent. și este descrisă mișcarea de la o terță parte. Deci acum. Aici totul va fi un pic mai ușor, dar pentru salt nu vom adăuga poziția acum. Acum vom da lovitura din spate a personajului cu un impuls de impuls de corp rigid la corpul fizic. Să începem. (Bineînțeles că vom crea un script de mutare.) Puteți citi, de asemenea, despre crearea unei scene unde totul se va întâmpla, din nou în tutorialul anterior)






Mai întâi, legăm componenta cerută în scenariu. Deasupra clasei scrie "[RequireComponent (typeof (Rigidbody)]]".


utilizând UnityEngine;
utilizând System.Collections;

[RequireComponent (typeof (Rigidbody)]]
clasa publica Move. MonoBehaviour <
>


Aici. " Acum, declarați variabilele. Jucătorul, viteza sa rigidă, viteza de salt, variabila booleană (saltul de verificare) și chiar platforma cu care se va confrunta jucătorul atunci când se aterizează (în inspector indică, nu?).


public GameObject Player;
public Rigidbody ThisRigidpody;
viteza int int = 5;
public int JumpSpeed ​​= 8;
publice bool Jumping;
platforma publică GameObject;


Început, atribuim componenta și componentele variabilei player și script-ul pe obiect.


void Start () <
Jucător = (GameObject) this.gameObject;
ThisRigidpody = (Corpul rigid) this.rigidbody;
>


Acum vom adăuga o poziție pentru a vă deplasa la stânga și la dreapta. Dar totul depinde de modul în care ai pus jucătorul (am un jucător - un cilindru). La mine se vede în lateral, înseamnă că a mers pe lateral, este necesar să se adauge și să se ia în față. Îl facem în "void Update ()".







dacă (Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.LeftArrow))
<
Player.transform.position + = Player.transform.forward * viteza * Time.deltaTime;
>
dacă (Input.GetKey (KeyCode.D) || Input.GetKey (KeyCode.RightArrow))
<
Player.transform.position - = Player.transform.forward * viteza * Time.deltaTime;
>


Ei bine, atunci. Noi toti mergem. Acum hai să facem un salt. Oferim doar un impuls rigidității jucătorului. Iată cum se face: "ThisRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);".
Acum, să scriem condiția.


dacă (Input.GetKeyDown (KeyCode.W) || Input.GetKeyDown (KeyCode.UpArrow))
<
dacă (Jumping == false)
<
Jumping = adevărat;
AcestRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);
>
>


Verificăm dacă variabila booleană "Jumping = false", atunci putem să sarăm. Adică, impulsul este dat corpului fizic.
Acum să terminăm totul în verificarea variabilei booleene. Să creați o nouă metodă. "void OnCollisionEnter (Collision collis)".


void OnCollisionEnter (Collision collis)
<
dacă (collis.gameObject == Platformă)
<
Jumping = fals;
>
>


În cadrul metodei, verificăm dacă coliziunea este o platformă, apoi "Jumping = false". Și din nou poți sări.
Ei bine. Ca totul.


utilizând UnityEngine;
utilizând System.Collections;

[RequireComponent (typeof (Rigidbody)]]
clasa publica Move. MonoBehaviour <
public GameObject Player;
public Rigidbody ThisRigidpody;
viteza int int = 5;
public int JumpSpeed ​​= 8;
publice bool Jumping;
platforma publică GameObject;

void Start () <
Jucător = (GameObject) this.gameObject;
ThisRigidpody = (Corpul rigid) this.rigidbody;
>
void Update () dacă (Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.LeftArrow))
<
Player.transform.position + = Player.transform.forward * viteza * Time.deltaTime;
>
dacă (Input.GetKey (KeyCode.D) || Input.GetKey (KeyCode.RightArrow))
<
Player.transform.position - = Player.transform.forward * viteza * Time.deltaTime;
>
dacă (Input.GetKeyDown (KeyCode.W) || Input.GetKeyDown (KeyCode.UpArrow))
<
dacă (Jumping == false)
<
Jumping = adevărat;
AcestRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);
>
>
>
void OnCollisionEnter (Collision collis)
<
dacă (collis.gameObject == Platformă)
<
Jumping = fals;
>
>
>

Puteți verifica, adăuga animație etc.
Iată un exemplu.







Articole similare

Trimiteți-le prietenilor: