J'ai essayé de faire un system de Compétence pour bien explique la logique que j'ai derriere je voudrais faire.
Une classe Compétences qui va avoir en propriétées un scriptableObject ou des proprietes simples comme : nomCompétence,niveauCompétence,ratioDégatAd,ratioDégatAp...
En réalisant un héritage ça me permet de faire des competences de tout genre a la volé exemple
Script FrappeDuChaos : Compétence qui va posseder une seule methode c'est sa competence avec les proprietes de competences.
Script SoinDeMilou : Compétence qui va posseder une seule methode c'est sa competence avec les proprietes de competences.
puis un autre script pour finir qui se nommera BarreCompétence/GestionCompétencesPlayer qui sera un monoBehaviour qui possedera un tableau de type competence[4] c'est un peu comme une barre de sorts dans un moba ( sauf que plus tard si le joueur veut changer sa competence[1] avec une competenceX il pourra)
Voici mes scripts !
Compétences.cs
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Competences
{
[Header("Information de la competence")]
public string nomCompetence;
public string resumeCompetence;
public Sprite imgCompetence;
[Header("Niveau de la competence")]
public int niveauCurrent;
public int niveauMax;
[Header("Type damage")]
public int physicalDamage;
public int magicDamage;
public int trueDamage;
[Header("Le temps")]
public int cooldown;
public bool isCooldown;
[Header("Ratio des damages")]
public float ratioPhysicalDamage;
public float ratioMagicDamage;
public Competences()
{
nomCompetence = "Compétence de base";
resumeCompetence = "Resume de base";
niveauCurrent = 1;
niveauMax = 5;
physicalDamage = 0;
magicDamage = 0;
trueDamage = 0;
cooldown = 0;
isCooldown = false;
ratioPhysicalDamage = 0;
ratioMagicDamage = 0;
}
public virtual void UtiliserCompetences()
{
Debug.log("Competence null");
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FrappeDuDragon : Competences
{
public FrappeDuDragon()
{
nomCompetence = "Frappe du dragon";
resumeCompetence = "Frappe du dragon du chevalier";
niveauCurrent = 1;
niveauMax = 5;
physicalDamage = 0;
magicDamage = 0;
trueDamage = 0;
cooldown = 0;
isCooldown = false;
ratioPhysicalDamage = 0;
ratioMagicDamage = 0;
}
public override void UtiliserCompetences()
{
Debug.Log("E");
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GestionCompétences : MonoBehaviour
{
public Competences[] BarreDeCompetence;
// Start is called before the first frame update
void Start()
{
BarreDeCompetence = new Competences[4];
BarreDeCompetence[0] = new FrappeDuDragon();
}
// Update is called once per frame
void Update()
{
BarreDeCompetence[0].UtiliserCompetences()
}
}
Voila merci beaucoup en tout cas !