Unity3d - hozzon létre karakter mozgást és animációt! 2. rész (platformer) - játékok létrehozása - könyvtár

Helló! Ez a cikk második része a Unity3D karakterének mozgásáról. Ismét ez a bemutató lesz példa. Itt tekintjük a platformer mozgását. De most animáció nélkül. Erről az előző cikkben olvashat. és leírják a mozgalmat egy harmadik féltől. Tehát most. Itt mindent könnyebb lesz, de az ugráshoz most nem adjuk hozzá a pozíciót. Most a karakter hátoldalát a fizikai test merev impulzusának impulzussal rúgjuk. Kezdjük. (Természetesen Move forgatókönyvet is létrehozunk.) Akkor is olvashatsz egy olyan jelenet létrehozásáról, ahol minden megtörténik, még az előző bemutatóban is)
Először megkötjük a szükséges összetevőt a szkripthez. Az osztály felett írunk "[RequireComponent (typeof (Rigidbody))]".


a UnityEngine használatával;
a System.Collections használatával;

[RequireComponent (typeof (Rigidbody))]
nyilvános osztály Mozgás. MonoBehaviour <
>


Itt. Most adja meg a változókat. A játékos, a rigidbodi sebessége, az ugrás sebessége, a logikai változó (ellenőrző ugrás) és az a platform, amellyel a játékos szembeszáll a leszálláskor (az ellenőr megmutatja, mi?).


nyilvános GameObject lejátszó;
nyilvános Rigidbody ThisRigidpody;
nyilvános int sebesség = 5;
nyilvános int JumpSpeed ​​= 8;
nyilvános Bool Jumping;
nyilvános GameObject Platform;


Kezdetben az elemet és az összetevőket hozzárendeljük a játékos változójához és az objektum forgatókönyvéhez.


void Start () <
Player = (GameObject) this.gameObject;
Ez a Rigidpody = (Rigidbody) ez a rohadék;
>


Most hozzáadunk egy pozíciót balra és jobbra. De akkor minden attól függ, hogy hogyan helyezte a lejátszót (van egy játékosom - egy henger). Számomra oldalirányban néz ki, azt jelenti, hogy oldalra ment, hozzá kell adni és tovább kell vinni. Ezt a "void Update ()" üresen végezzük.


ha (Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.LeftArrow))
<
Player.transform.position + = Player.transform.forward * sebesség * Time.deltaTime;
>
ha (Input.GetKey (KeyCode.D) || Input.GetKey (KeyCode.RightArrow))
<
Player.transform.position - = Player.transform.forward * sebesség * Time.deltaTime;
>


Hát akkor. Mindannyian mennek. Most pedig ugorjunk. Csak lendületet adunk a játékos merevségéhez. Így van ez: "ThisRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);".
Most írjuk le a feltételt.


if (Input.GetKeyDown (KeyCode.W) || Input.GetKeyDown (KeyCode.UpArrow))
<
ha (Jumping == false)
<
Jumping = igaz;
ThisRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);
>
>


Ellenőrizzük, hogy a logikai változó "Jumping = false", akkor ugorhatunk. Ez azt jelenti, hogy impulzust kap a fizikai test.
Végezzünk el mindent a logikai változó ellenőrzésénél. Hozzunk létre egy új módszert. "érvénytelen OnCollisionEnter (Collision collis)".


void OnCollisionEnter (Collision collis)
<
ha (collis.gameObject == Platform)
<
Jumping = false;
>
>


Az eljárás során ellenőrizzük, hogy az ütközés platform, majd "Jumping = false". És újra tudsz ugrani.
Nos. Mint minden.


a UnityEngine használatával;
a System.Collections használatával;

[RequireComponent (typeof (Rigidbody))]
nyilvános osztály Mozgás. MonoBehaviour <
nyilvános GameObject lejátszó;
nyilvános Rigidbody ThisRigidpody;
nyilvános int sebesség = 5;
nyilvános int JumpSpeed ​​= 8;
nyilvános Bool Jumping;
nyilvános GameObject Platform;

void Start () <
Player = (GameObject) this.gameObject;
Ez a Rigidpody = (Rigidbody) ez a rohadék;
>
void Update () if (Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.LeftArrow))
<
Player.transform.position + = Player.transform.forward * sebesség * Time.deltaTime;
>
ha (Input.GetKey (KeyCode.D) || Input.GetKey (KeyCode.RightArrow))
<
Player.transform.position - = Player.transform.forward * sebesség * Time.deltaTime;
>
if (Input.GetKeyDown (KeyCode.W) || Input.GetKeyDown (KeyCode.UpArrow))
<
ha (Jumping == false)
<
Jumping = igaz;
ThisRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);
>
>
>
void OnCollisionEnter (Collision collis)
<
ha (collis.gameObject == Platform)
<
Jumping = false;
>
>
>

Ellenőrizheti, animációt adhat hozzá stb.
Íme egy példa.

Kapcsolódó cikkek