El següent pas en el meu projecte serà crear un sistema d'inventari per al jugador i contenidors de emmagatzematge com ara calaixos. El sistema d'inventari tindrà tres components: el personatge del jugador, els objectes recollibles i l'inventari on es desen els objectes recollits.
Component d'inventari
Per crear l'inventari, utilitzaré un Component d'Actor, un tipus especial de Blueprint que es pot adjuntar a qualsevol Actor i que pot afegir variables, funcions, interfícies, etc. No obstant, no pot afegir malles o components renderables.
El component tindrà tres variables importants:
- InventoryItems: una llista d'articles que s'han recollit i s'emmagatzemen a l'inventari.
- MaxSize: un enter que indica el nombre màxim d'articles que es poden emmagatzemar a l'inventari.
- ActualSize: un enter que indica el nombre d'articles actualment a l'inventari. Això s'utilitza per comprovar si es pot agafar un article.
La variable InventoryItems és de tipus array i emmagatzema instàncies de l'objecte BP_BaseCollectable. El component també tindrà una funció "AddItem" que comprova si hi ha espai a l'inventari i afegeix l'article recollible si és possible. La funció obté un objecte BP_BaseCollectable i retorna "true" si s'ha afegit l'article i "false" en cas contrari. Aquest és el lògic del Blueprint:
Third Person Character
El component d'inventari s'afegirà al personatge del jugador utilitzant el Blueprint de Personatge en tercera persona. El jugador tindrà accés a la funció "AddItem" a través de tots els Blueprints.
Recorda el post sobre la interacció mitjançant interfícies on hem implementat un sistema útil per activar elements.
Collectable Objects
Els objectes recollibles heretaran del BP_BaseCollectable, que és un Blueprint d'Actor que implementa la interfície BPI_Interactable.
L'objecte base té quatre variables, tres de les quals es faran servir en una publicació futura per a la interfície d'usuari:
- Size: la mida de l'objecte a l'inventari.
- Name: el nom que es mostrarà a la interfície d'usuari.
- UIImage: la imatge que es mostrarà a l'inventari.
- IsCollected: indica si s'ha recollit l'objecte. Si és així, no es renderitzarà i es situarà fora del jugador.
Quan el jugador interactua amb un objecte recollible, es produeixen els següents passos en el Event Graph:
1. S'obté el component Inventari del jugador.
2. L'objecte recollible s'afegeix al component Inventari a través de la funció AddItem.
3. L'objecte recollible desapareix.
Si l'objecte es recull, es situarà per sobre del jugador per evitar col·lisions "fantasma".
Per a aquest exemple, he creat dos objectes recollibles per provar amb una malla del paquet Mech Constructor. Cada objecte té un nom i una imatge definits en el tauler de detalls per defecte.
El següent pas serà mostrar l'inventari en pantalla.