Créer un système de Drag and Drop sur Unity
Réflexion sur le système de Drag and Drop et celui du Split Étant donné que j’ai trouvé l’exercice plutôt simple, je me suis dit “Je …
Lire l'articleC’est une étape qui me fait particulièrement peur et pourtant j’ai une petite idée pour la réaliser.
Pour commencer, je voulais un système de craft me permettant de me challenger. Et j’ai tout de suite pensé aux jeux où nous devons craft nos items nous même. C’est-à-dire déposer nos ressources dans une grille avec une disposition bien précise pour former et créer un nouvel item. Tel que le jeu Minecraft.
Je pense que ce genre de système de Craft fonctionne de cette manière :
Nous avons une grille d’une dimension définie contenant des slots ayant une identité de placement et de l’autre côté, nous avons une liste d’items avec le patron de conception stocké dans autre une liste. Cela permet de regarder si notre disposition dans la grille peut crafter ou non un nouvel item.
Étant donné que j’avais déjà une idée globale et que mes slots ayant InventoryItem
Je me suis permis de me lancer directement.
Tout d’abord, j’ai conçu la création des patrons de conception de mes items, cela me permettra par la suite de créer et de paramétrer très facilement de nouveaux items. J’ai même eu l’idée de concevoir un panel d’édition visuel pour paramétrer mes items plus simplement et plus intuitivement. Mais il fallait d’abord que je teste ma réflexion et que je la mette en œuvre.
Ceci est mon CraftScriptable
il va me permettre de créer de nouveaux items qui vont pouvoir être craftés par la suite.
[CreateAssetMenu(fileName = "Data", menuName = "CraftScriptable", order = 1)]
public class CraftScriptable : ScriptableObject
{
// Partie des données de paramétrage pour craft un item
public List<ressourceCraft> ressource = new List<ressourceCraft>();
// Partie description de l'item et pour le joueur
public string CraftName;
public Sprite CraftImage;
public string CraftDescription;
}
[Serializable]
public class ressourceCraft
{
// Item que je veux pour un slot de la grille
public Item item;
// Le nombre qu'il en faut (je pense l'enlever pour en mettre 1 par défaut)
public int numberItem;
// La position de l'item dans la grille
public ItemPositionCraft positionCraft;
}
// ItemPositionCraft est un Enum pour positionner l'item par rapport à une position donnée
public enum ItemPositionCraft
{
BottomLeft = 0,
BottomMiddle = 1,
BottomRigth = 2,
MiddleLeft = 3,
Middle = 4,
MiddleRight = 5,
TopLeft = 6,
TopMiddle = 7,
TopRight = 8
}
Le seul gros défaut est que si par erreur dans l’editor, nous mettons par exemple une “pierre” au milieu et que nous mettons également un autre item au même endroit, cela va causer des problèmes sur le patron de conception de l’item.
Une fois que nous avons nos patrons de conçus, il faut la grille de craft pour savoir si un objet peut être crafté ou non.
La Grille va tout simplement fonctionner avec un script dérivé de InventoryItem
se nommant CraftSlotItem
. Il possède quelques fonctionnalités en plus permettant de récupérer et de vérifier via Crafting
.
Comment la vérification va-t-elle se faire lorsqu’un item est déposé dans cette grille de 3x3 ?
Dans Crafting
nous aurons une méthode de vérification :
public void verification()
{
for (int i = 0; i < craftScriptable.Count; i++)
{
count = 0;
for (int j = 0; j < craftScriptable[i].ressource.Count; j++)
{
for (int k = 0; k < craftSlotItem.Count; k++)
{
if (
craftScriptable[i].ressource[j].positionCraft == craftSlotItem[k].GetItemPositionCraft()
&& craftSlotItem[k].GetItem() != null
&& craftSlotItem[k].GetItem().GetType() == craftScriptable[i].ressource[j].item.GetType()
)
{
count++;
}
}
}
if (count == craftScriptable[i].ressource.Count)
{
Debug.LogWarning("vous pouvez craft un " + craftScriptable[i].CraftingItemImage.name);
craftingSlotItem.SetSlot(craftScriptable[i].CraftingItemImage, craftScriptable[i].CraftingItemDescription);
return;
}
else
{
craftingSlotItem.ResetSlot();
}
}
}
Cette méthode va permettre de regarder parmi tous les patrons qui existent via craftScriptable
si dans la grille les éléments sont bien placés et si ce sont les bons items !
Pour cela, nous faisons également une boucle au niveau des ressources contenues dans le patron pour savoir si nous avons entre 2 à 9 items, puis dans une autre boucle à la suite, nous les comparons pour chaque case du slot de craft.
Je ne pensais pas apprendre autant de choses avec cet exercice, et surtout, je ne pensais pas le pousser autant jusqu’ici ! Au départ, ce petit projet consistait juste à ramasser des objets puis de les trier. J’ai beaucoup aimé ce projet, il m’a cassé la tête à plusieurs reprises, mais une fois réalisé, je suis très fier de ce que j’ai produit !
Si vous avez la moindre question ou une partie que vous n’avez pas comprise. N’hésitez pas à m’envoyer un message sur mon Discord ou par Mail.
Réflexion sur le système de Drag and Drop et celui du Split Étant donné que j’ai trouvé l’exercice plutôt simple, je me suis dit “Je …
Lire l'articleRéflexion sur le système Pour mon système d’inventaire, je ne savais pas trop où commencer. Je savais juste qu’il fallait récupérer les …
Lire l'article