Új vagy a Unityben? Szeretnéd megtanulni, hogyan veheted át a játékosok inputjait, és hogyan mozgathatod a karaktereket a képernyőn? Ezt az útmutatót azért hoztuk létre, hogy bemutassuk a játékosok mozgásának három különböző módját a Unityben.

Akár most ismerkedsz a kódolással, akár van némi tapasztalatod, ez a C# oktatóanyag talpra hoz téged, a karaktereidet pedig a saját lábukra.

Kezdjük el.

Játékos mozgás egységben: Bemenetek gyűjtése

Először is tudnod kell, hogyan rögzítheted a felhasználó bemeneteit, és hogyan alakíthatod őket mozgássá a játékban. A Unity ezt meglehetősen egyszerűvé teszi, ha tudod, hol keress.

Ha a Unity meg van nyitva, kattintson a gombra Szerkesztés a felső eszköztáron. Most válassza ki Projektbeállítások. A bal oldali listából válassza ki a lehetőséget Bemenetkezelő. Válassza ki Tengelyek, kitölti a bemeneti értékek listáját. Meg akarod nézni Vízszintes és Függőleges alapmozgáshoz.

Ezeket a tengelyeket együtt fogja használni Bemenet. GetAxisRaw(); az alapvető mozgáshoz a következő részben.

instagram viewer

Játékos mozgás egységben merev test és ütköztető segítségével

Most, hogy ismeri a tengelyek nevét, használhatja őket a játékos mozgásának vezérlésére.

Az Ön Unity projektjében Hierarchia nézet, kattintson a jobb gombbal, és válassza ki 3D objektum > Kapszula hogy megteremtse azt, aminek mozgást ad. Ügyeljen arra, hogy ugyanazt a taktikát használja a talaj létrehozásához Repülőgép hogy a kapszula ráálljon.

Feltétlenül állítsa vissza a Átalakítani mindkét objektum értékét, és mozgassa a kapszulát úgy, hogy az a Síkon álljon. Nevezze át a kapszulát „Player”-re az egyszerű azonosítás érdekében.

Összefüggő: Az 5 Unity játékfejlesztő nyelv: melyiket érdemes megtanulni?

Kattintson a Játékos objektumban és a Ellenőr nézethez görgessen le Adjon hozzá komponenst. Add hozzá a Merev test, majd adjon hozzá egy másik összetevőt a Kapszulaütköző ezúttal. Szüksége lesz ezekre az összetevőkre, hogy hozzáadja a fizikát, és így a mozgást is Játékos.

Ezután kattintson jobb gombbal a sajátjára Szkriptek mappa és Teremt egy új C# szkript. Nevezd el ezt a szkriptet a "PlayerMovement" mintájára. Ha többféle mozgástípust szeretne hozzáadni a különböző karakterekhez vagy vezérlőtípusokhoz, akkor sok különböző szkriptet kell létrehoznia minden mozgástípushoz. Egyelőre az alapokra fogunk összpontosítani, és egyetlen szkriptet használunk.

Lásd még: Mi a moduláris programozás az Unity-ben és miért fontos?

Kattintson duplán a szkriptre a megnyitásához. Megjelenik egy alapértelmezett Unity-szkript:

rendszer segítségével. Gyűjtemények;
rendszer segítségével. Gyűjtemények. Generikus;
UnityEngine használatával;
nyilvános osztály PlayerMovement: MonoBehaviour
{
// A Start meghívása az első keretfrissítés előtt történik
void Start()
{

}
// A frissítést keretenként egyszer hívják meg
érvénytelen frissítés ()
{

}
}

Lehet törölni rendszer segítségével. Gyűjtemények; és segítségévelRendszer. Gyűjtemények. Generikus; mivel nincs rájuk szükség ehhez a szkripthez.

Ha ez nincs az útból, összpontosítson rá

public class PlayerMovement: MonoBehaviour {

átmenetileg. A nyitó göndör merevítő belsejében hozzon létre a nyilvános úszó nevű változó sebesség vagy valami hasonló. Ez sebesség változó egy szorzó, amely szabályozza, hogy milyen gyorsan a mi Játékos további programozás után mozog. Egyelőre beállítva sebesség egyenlő valami hasonlóval 10f.

Azt is meg kell engedned a Unity-nek, hogy van egy merev test, amelyet manipulálhat ebben a szkriptben. Ez a kulcsszóval történik Merev test és egy változónév – mi választjuk rb.

nyilvános osztály PlayerMovement: MonoBehaviour
{
nyilvános lebegési sebesség = 10f; //Sebességszorzót vezérli

Merev test rb; //Kiírja a szkriptnek, hogy van egy merev test, az rb változóval hivatkozhatunk rá egy további szkriptben

Ennyit kell hozzáfűznie ehhez a szakaszhoz. Most pedig lépjen tovább void Start(). A játék elindításakor be kell állítani a rb változó egyenlő a Merev test a Játékos így:

void Start()
{
rb = GetComponent(); //rb egyenlő a lejátszó merev testével
}

Most pedig vessen egy pillantást a érvénytelen frissítés () funkció. Ez az a funkció, amellyel folyamatosan lekérheti a bemeneteket a lejátszók billentyűzetéről, kontrollereiről stb. Emlékezzen, amikor ellenőrizte a Projektbeállítások számára Bemeneti tengelyek? Itt fogod használni őket.

érvénytelen frissítés ()
{
float xMove = Bemenet. GetAxisRaw("Vízszintes"); // d kulcs 1-re, a kulcs -1-re változtatja az értéket
float zMove = Bemenet. GetAxisRaw("Függőleges"); // w gomb 1-re, s gomb -1-re változtatja az értéket
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * sebesség; // Sebességet hoz létre az érték irányában, amely megegyezik a gombnyomással (WASD). Az rb.velocity.y az eséssel + ugrással foglalkozik, a sebességet y-ra állítva.

}

Ne aggódjon, ha túlterheltnek érzi magát a kód ugrása miatt; lépésről lépésre elmagyarázzuk. Először hozzon létre a úszó változó névvel, mint xMove, és állítsa egyenlőnek Bemenet. GetAxisRaw("Vízszintes");

Bemenet. GetAxisRaw(); a Unity módszere a lejátszó bemeneteinek rögzítésére Tengelyek megtaláltad a Projektbeállítások. Bővebben olvashatsz róla A Unity hivatalos dokumentációja. "Vízszintes" származik a Vízszintes tengely név a Unityben. Ez a tengely balra és jobbra mozgást vezérel az "a" és "d" gombokkal.

Amint valószínűleg mostanra sejtheti, float zMove = Bemenet. GetAxisRaw("Függőleges"); ugyanezt teszi a "w" és az "s" billentyűk kivételével.

Összefüggő: A legjobb Unity 3D oktatóanyagok kezdőknek

Következő, ezt tedd fel sebesség játékba hozott változót, és fejezd be a kirakós játék utolsó darabját a játékosok mozgásához Unityben.

rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * sebesség; // Sebességet hoz létre az érték irányában, amely megegyezik a gombnyomással (WASD). Az rb.velocity.y az eséssel + ugrással foglalkozik, a sebességet y-ra állítva.

Menj vissza a Unityhoz Ellenőr nézet a Játékos tárgy. Vessen egy pillantást a Merev test-alatt Info, akkor megjelenik egy érték Sebesség. Ez az az érték, amelyet megcéloz rb.sebesség.

új Vector3(xMove, rb.velocity.y, zMove) * sebesség, létrehoz egy új vektort a megadott x, y és z értékekkel, majd megszorozza a vektor értékét sebesség.

Ügyeljen arra, hogy húzza a PlayerMovement script rá Játékos tárgy az Unityben, és ennyi! Összességében van egy működő C# szkripted, amely bemeneteket vesz a lejátszótól, és karaktermozgássá alakítja át azokat a Unityben.

Íme a kész kód:

UnityEngine használatával;
nyilvános osztály PlayerMovement: MonoBehaviour
{
nyilvános lebegési sebesség = 10f; //Sebességszorzót vezérli
Merev test rb; //Kiírja a szkriptnek, hogy van egy merev test, az rb változóval hivatkozhatunk rá egy további szkriptben

// A Start meghívása az első keretfrissítés előtt történik
void Start()
{
rb = GetComponent(); //rb egyenlő a lejátszó merev testével
}

// A frissítést keretenként egyszer hívják meg
érvénytelen frissítés ()
{
float xMove = Bemenet. GetAxisRaw("Vízszintes"); // d kulcs 1-re, a kulcs -1-re változtatja az értéket
float zMove = Bemenet. GetAxisRaw("Függőleges"); // w gomb 1-re, s gomb -1-re változtatja az értéket
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * sebesség; // Sebességet hoz létre az érték irányában, amely megegyezik a gombnyomással (WASD). Az rb.velocity.y az eséssel + ugrással foglalkozik, a sebességet y-ra állítva.

}
}

jegyzet: Ha úgy találja, hogy a karaktere többet csapkod, mint bármi más, győződjön meg arról, hogy a játékos forgását rögzíti a Ellenőr.

Tanuljon és szerezzen többet a Unityben

Most, hogy tudja, hogyan kell programozni a játékosok mozgását Unityben a Rigidbody és Collider komponensekkel, mit fog tanulni ezután? Lehet, hogy a mozgásvezérlő bővítése olyan dolgokkal, mint a csúsztatás, a dupla ugrás és még sok más, szórakoztató és vonzó lenne.

A Unity Learn tele van érdekes témákkal, amelyekkel fejlesztheti játékfejlesztési készségeit. Úgy gondoljuk, hogy a programozási ismereteinek bővítésében az egyik legfontosabb tényező az, hogy minden nap tanuljon valami újat. Maradjon kíváncsi és boldog hackelést!

A Unity Learn a legegyszerűbb módja a játékfejlesztés elsajátításának

Szeretnéd elkezdeni saját játékaid fejlesztését? A Unity Learn a legjobb és legegyszerűbb módja annak, hogy megtanulja és elsajátítsa azt, amit tudnia kell.

Olvassa el a következőt

RészvényCsipogEmail
Kapcsolódó témák
  • Programozás
  • Játékfejlesztés
  • Egység
  • Programozás
A szerzőről
Marcus Mears III (30 publikált cikk)

Marcus szabadúszó technológiai újságíró és a MUO programozási részlegének junior szerkesztője. Ő egy egész életen át tanuló, hobbi front-end fejlesztő és novellaíró, aki több mint 3 éves tapasztalattal rendelkezik a próza fejlesztésében, amely folyamatosan tájékozódik az olvasókról.

Továbbiak Marcus Mearstől III

Iratkozzon fel hírlevelünkre

Csatlakozzon hírlevelünkhöz műszaki tippekért, ismertetőkért, ingyenes e-könyvekért és exkluzív ajánlatokért!

Kattintson ide az előfizetéshez