This shows you the differences between two versions of the page.
pjv:laboratoare:05 [2018/11/14 15:58] alexandru.gradinaru |
pjv:laboratoare:05 [2018/11/14 19:34] (current) alexandru.gradinaru |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Elemente de programare a jocurilor 3D ===== | + | ===== Introducere in 3D ===== |
==== Controlul caracterelor in 3D ==== | ==== Controlul caracterelor in 3D ==== | ||
Line 5: | Line 5: | ||
Pentru miscarea si controlul caracterelor in 3D sunt posibile mai multe abordari. | Pentru miscarea si controlul caracterelor in 3D sunt posibile mai multe abordari. | ||
- | === Character Controller === | + | === CharacterController === |
- | Character Controller este o componenenta ce poate fi adaugata pentru a putea controla caracaterul. Aceasta componenta nu foloseste elemente de fizica in nici nu fel, dar vine atasat cu un collider de baza ''Capsule Collider'' care nu permite intrarea in alte collidere. Acest lucru simplifica foarte mult scriptarea caracterului. | + | CharacterController este o componenenta ce poate fi adaugata pentru a putea controla caracaterul. Aceasta componenta nu foloseste elemente de fizica in nici nu fel, dar vine atasat cu un collider de baza ''Capsule Collider'' care nu permite intrarea in alte collidere. Acest lucru simplifica foarte mult scriptarea caracterului. |
Character Controller pune la dispozitie doua metode pentru miscarea caracterului: | Character Controller pune la dispozitie doua metode pentru miscarea caracterului: | ||
Line 36: | Line 36: | ||
</code> | </code> | ||
- | In cazul functiilor puse la dispozitie de Character Controller, miscarile sunt constranse de coliziuni in mod automat, si fiind destul de permisiva (spre exemplu va putea urca autmat rampe sau scari). | + | In cazul functiilor puse la dispozitie de Character Controller, miscarile sunt constranse de coliziuni in mod automat si este destul de permisiva (spre exemplu va putea urca autmat rampe sau scari). |
<html> | <html> | ||
Line 91: | Line 91: | ||
</code> | </code> | ||
Daca inputul nu este normalizat, caracterul se va misca cu o viteza mai mare atunci cand se misca in fi | Daca inputul nu este normalizat, caracterul se va misca cu o viteza mai mare atunci cand se misca in fi | ||
+ | |||
+ | |||
+ | === Rotatia camerei === | ||
+ | |||
+ | Pentru rotatia camerei exista mai multe variante, dar una dintre cele mai indiacate este sa retineti intotdeauna rotatia actuala a camerei, pentru a evita probleme legate de rotatii multiple compuse. | ||
+ | |||
+ | O varianta simpla: | ||
+ | <code> | ||
+ | private float yaw = 0.0f; | ||
+ | private float pitch = 0.0f; | ||
+ | |||
+ | void Update () { | ||
+ | yaw += speedH * Input.GetAxis("Mouse X"); | ||
+ | pitch -= speedV * Input.GetAxis("Mouse Y"); | ||
+ | |||
+ | transform.eulerAngles = new Vector3(pitch, yaw, 0.0f); | ||
+ | } | ||
+ | </code> | ||
==== Raycasting ==== | ==== Raycasting ==== | ||
Line 148: | Line 166: | ||
Pentru reprezentarea healthbar-ului sau a altor elemente de tip bara, se poate folosi un element de UI (gameobject) de tip Slider, asa cum este reprezentat in imaginea de mai sus. | Pentru reprezentarea healthbar-ului sau a altor elemente de tip bara, se poate folosi un element de UI (gameobject) de tip Slider, asa cum este reprezentat in imaginea de mai sus. | ||
+ | |||
+ | <code> | ||
+ | GetComponent.<Slider>().value = myHealth; | ||
+ | </code> | ||
=== Minimap === | === Minimap === | ||
Line 163: | Line 185: | ||
{{ :pjv:laboratoare:minimap4.png?direct&350 |}} | {{ :pjv:laboratoare:minimap4.png?direct&350 |}} | ||
- | Rezultatul va fi | + | Rezultatul poate fi ibunatatit prin plasarea acestuia intr-un loc potrivit adaugarea unei masti sau a unei borduri si asa mai departe. |
+ | |||
+ | {{ :pjv:laboratoare:minimap7.png?direct&750 |}} | ||
==== Crearea de animatii pentru obiecte 3D ==== | ==== Crearea de animatii pentru obiecte 3D ==== | ||
Line 201: | Line 225: | ||
</code> | </code> | ||
- | <hidden> | + | ==== Cerinte ==== |
- | (vezi demo UI de la 3dpub) | + | |
- | - coliziuni, proiectile | + | |
- | - interfata grafica pt un fps | + | |
- | - Managing weapons, Navmeshes, navmesh Agents, AI Auto-Attack | + | |
- | - animatie caractere atac, arma, coliziuni atac | + | |
- | </hidden> | + | |
- | <hidden> | + | Realizarea unui joc 3D fps |
- | ===== Elemente de programare a jocurilor 3D ===== | + | |
- | - animatii cu blend tree | + | |
+ | - Configurati scene pentru rulare 3D | ||
+ | - Adaugati in scena un caracter FPS: o arma, un crosshair si camera plasata pentru a da impresia unui caracter (puteti lua resurse din asset store sau alte locuri: [[pjv:resurse|]]) | ||
+ | - Caracterul se va putea controla de la tastatura si mouse. Folositi RigidBody sau CharacterController pentru control | ||
+ | - Caracterul va avea o bara de viata | ||
+ | - Arma | ||
+ | - va avea o mica animatie de miscare/rotatie la Fire | ||
+ | - va avea mai multe moduri de tragere, de ex: rifle (continuu) sau snipe (o data la apasarea de buton, cu damage mai mare) | ||
+ | - Adaugati unul sau mai multi inamici in scena scriptati astfel incat: | ||
+ | - sa aiba viata | ||
+ | - la plasarea tintei(crosshair) pe acesta sa apara un healthbar | ||
+ | - la actiunea de Fire a armei acesta va fi aruncat un pic inapoi si va pierde din viata | ||
+ | - Adaugati un minimap | ||
- | </hidden> |