Sistema d'inventari - part 1

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.