This shows you the differences between two versions of the page.
pjv:laboratoare:2024:a02 [2024/10/21 13:33] alexandru.gradinaru [Sisteme turn based] |
pjv:laboratoare:2024:a02 [2024/10/23 08:45] (current) maria_anca.balutoiu [Sisteme de evenimente] |
||
---|---|---|---|
Line 47: | Line 47: | ||
* Inamicii realizeaza actiuni random | * Inamicii realizeaza actiuni random | ||
- | Pentru simplitate, toate interactiunile se pot realiza prin butoane de comanda. | + | Pentru simplitate, toate interactiunile se pot realiza prin butoane de comanda, dar este necesar sa folositi un sistem de evenimente pentru decuplarea responsabilitatilor (la alegere). |
Bonusuri: | Bonusuri: | ||
Line 84: | Line 84: | ||
=== Gestiune personaje === | === Gestiune personaje === | ||
+ | |||
+ | Pentru gestiunea personajelor sunt importante 3 elemente: | ||
+ | * gestiunea pe harta: miscare, constrangeri, efecte, pozitionare, pathfinding etc | ||
+ | * gestiunea prin interfata grafica: abilitati, skilltree, actiuni etc | ||
+ | * gestiunea in memorie | ||
+ | |||
+ | |||
+ | Intrucat sunt foarte multe elemente de gestionat, recomandarea este sa se incerce o decuplare a acestor componente, din punct de vedere logic. | ||
+ | |||
+ | Pentru selectia personajelor cel mai adesea se folosesc RayCast-uri. | ||
+ | Pentru selectie multipla (mai multe personaje/unitati odata) o varianta poate fi: | ||
+ | * Obține raycast a poziției în care jucătorul a început să tragă | ||
+ | * Obțineți raycast a poziției în care jucătorul a terminat de tras | ||
+ | * Din aceste două Vector3 puteți construi un cub 3D. | ||
+ | * Tratați-l ca pe un plan 2D (adică ignorați înălțimea cubului); | ||
+ | * Pentru fiecare unitate: dacă unitatea se află în planul 2D, selectați-o. | ||
=== Gestiune comenzi === | === Gestiune comenzi === | ||
Line 232: | Line 248: | ||
| | ||
// Unsubscribe from the event (stop listening). | // Unsubscribe from the event (stop listening). | ||
- | private void OnDisable() => player.OnPlayerHealthChanged += HandlePlayerHealthChanged; | + | private void OnDisable() => player.OnPlayerHealthChanged -= HandlePlayerHealthChanged; |
// Method which is called on event invocation | // Method which is called on event invocation | ||
Line 301: | Line 317: | ||
fileName = "PlayerEventSO", | fileName = "PlayerEventSO", | ||
menuName = "Player/PlayerEventSO")] | menuName = "Player/PlayerEventSO")] | ||
- | public class PlayerEventSO : MonoBehaviour | + | public class PlayerEventSO : ScriptableObject |
{ | { | ||
// Unity event. | // Unity event. |