Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaHunor Kis Megváltozta több, mint 8 éve
1
Karakter Animáció és Kontroller Unity
2
Kezdeti lépések Alap projekt letöltése Egy statikus geometriát láthatunk Meg vannak a fizikai befoglalók is
3
Animált karakter asset Töltsük le a karakter asset-et Blenderből exportált fbx fájl Tartalmazza a csontvázat és az animációt is Az Asset könyvtárban csináljunk egy Character könyvtárat Másoljuk be ide az fbx fájlt és a textúrákat Vizsgáljuk meg a beimportált asset-et
4
Animált karakter asset
5
Megjegyzés Nem biztos, hogy az általunk betöltött modellre jól be lettek állítva az animációk Lehet, hogy a modellező szoftverben csak egymás után kerültek a kulcsok, és semmi csoportosítás nem jelent meg (futás, állás stb. nincs) Ilyenkor nekünk kell megadni az animációs klippeket Minden animációhoz a kezdő és végső frame-ek sorszámát, és megfelelően elnevezni őket
6
Huzzuk be az asset-et a jelenetbe (lehet, hogy az anyagjellemzőjén kicsit változtatni kell, material csere)
7
Animáció kellene (Készítsünk animator controller komponenst (asset nézet, jobb klikk …)) Nyissuk meg az Animation és az Animator ablakokat Az asset nézetben az up_stand animációt húzzuk rá a játékos objektumra Ha kiválasztjuk a játékost, megjelenik az animáció az Animation és az Animator ablakokban
8
Az animáció nem loop-ol Az importálás tulajdonságainál kell beállítani Soldieranimated2 asset animation tulajdonságainál ki kell választani az animációt, és beállítani rá a loop-ot
9
A felső test szépen animálódik, de a lábak nem Az animátor ablakban bal felül keressük meg a layers fület Itt egy réteg van: Base layer Nevezzük át Upper Body-ra Adjunk hozzá egy új réteget Nevezzük el Legs-nek Keressük meg a legs_stand animációt és húzzuk rá a modellre Erre az animációra is be kell állítanunk a loop-ot
10
Legs réteg beállításai:
11
Egyszerű TPS kamera A kamerát húzzuk a Player alá a hierarchia nézetben Állítsuk be a transzformációját (lokális transzformációt jelent):
12
Irányítás Adjunk a játékoshaoz egy szkriptet: PlayerController Kód a túloldalon
13
public class PLayerController : MonoBehaviour { public float moveSpeed = 30; public float turnSpeed = 80; void turnCharacter(float turn) { transform.Rotate(new Vector3 (0, turn, 0)); } void moveCharacter(Vector3 move) { transform.Translate(move); } void Update () { float dt = Time.deltaTime; Vector3 move = new Vector3 (0, 0, 0); float turn = 0; if (Input.GetAxis ("Horizontal") > 0) turn += dt * turnSpeed; else if (Input.GetAxis ("Horizontal") < 0) turn -= dt * turnSpeed; if (turn != 0) turnCharacter (turn); if (Input.GetAxis ("Vertical") > 0) move += Vector3.forward * moveSpeed * dt; else if (Input.GetAxis ("Vertical") < 0) move += Vector3.back * moveSpeed * dt; if (move.magnitude != 0) moveCharacter (move); }
14
Feladat A futás animációkat is hozzuk be az animatorba – Loop-olhatók legyenek – A megfelelő animációs rétegbe kerüljenek Adjunk hozzá egy új paramétert az animatorhoz: AnimState (int) Csináljuk meg az átmeneteket : ha 0 akkor állunk, ha 1 akkor futunk
15
A szkriptet is át kell írnunk, hogy váltson animációt, ha mozgunk public class PLayerController : MonoBehaviour { … Animator animator; void Start () { animator = GetComponent (); } … void moveCharacter(Vector3 move) { animator.SetInteger ("AnimState", 1); transform.Translate(move); } void Update () { … if (move.magnitude != 0) moveCharacter (move); else animator.SetInteger ("AnimState", 0); }
16
Fizika Kell egy collider (kapszula) és egy rigid body a player-re
17
Collider beállítása
18
Eltolás helyett sebességváltozás public class PLayerController : MonoBehaviour { … Rigidbody rigidBody; void Start () { animator = GetComponent (); rigidBody = GetComponent (); } … void moveCharacter(Vector3 move) { animator.SetInteger ("AnimState", 1); Vector3 dir = transform.rotation * move; rigidBody.velocity += dir; } void FixedUpdate () { … if (Input.GetAxis ("Vertical") > 0) move += Vector3.forward * moveSpeed * dt; else if (Input.GetAxis ("Vertical") < 0) move += Vector3.back * moveSpeed * dt; … }
19
Fizika kicsiszolása A rigid body és a kontroller szkript tulajdonságait kell finomhangolnunk – RigidBody: Drag – Kontroller: Move speed – Lehet a surlódással is játszani: Collison shape-hez új fizikai anyagjellemzőt rendelünk
20
Fegyvert a kézbe Az letöltött assetek közül importáljuk a projektbe a fegyever modelt és a textúráját (rifle.fbx, rifle.png) Húzzuk be a jelenetbe Ha kell, javítsuk ki az anyagjellemzőjét (ha a textúra nem jelenne meg) Szeretnénk, ha a karakter kezébe kerülne …
21
Fegyvert a kézbe Bontsuk ki a hierarchia nézetben a játékos csontvázhierarchiáját, míg el nem jutunk a hand_r nevű csonthoz A hierarchia nézetben húzzuk a fegyevert a hand_r csont alá A fegyver transzformációját állítsuk identitásra (azért működik ez most jól, mert eleve így modelleztük le, ha nem így lett volna, a transzformációját addig állítgatjuk, míg belesimul a kézbe)
23
A fegyvert nem így szoktuk tartani Van egy animációnk a fegyver tartására Csak a felsőtestre hat ki A felső test animációs rétegén kell csak változtatnunk Már láthatjuk, hogy az eddigi AnimState változónk nem lesz elegendő, kettőt kell definiálni: – AnimStateUp – AnimStateLegs Először alakítsuk át az animációkat, hogy az alsó és a felsőtestet más változó irányítson – Fel kell venni egy újabb változót, a régit pedig átnevezni – A legs layer-ben az átmenetekre beállítani az új változót – A PLayerController szkriptet is át kell írnunk (mindkét változót be kell állítanunk)
24
Adjuk hozzá a fegyver tartás animációt is a felső test animációs rétegéhez …
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.