Modifier point de damage de l'adversaire provisoirement

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
syanis94
Messages : 31
Inscription : 11 Nov 2018 16:23

Modifier point de damage de l'adversaire provisoirement

Message par syanis94 » 07 Avr 2020 20:50

Bonsoir les amis,

j'ai un problème que je n'arrive toujours pas a résoudre, donc voila je souhaite réduire les damages de l'ennemi provisoirement pendant 10 secondes le temps que l'effet bouclier de mon personnage se termine,le problème j'ai aucune idée comment le faire, donc je souhaite quand mon personnage choisi le bouclier et clique sur fire, le bouclier s'active pendant 10 secondes et qu'il ne perd aucun point de vie pendant cette période ? Comment faire svp ?

Une autre question svp comment faire pour augmenter la valeur d'une variable de 1, sachant que cette variable est dans un update, genre au moment ou il clique sur espace la variable augmente de 1 ?

Merci et désolé pour le dérangement

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Modifier point de damage de l'adversaire provisoirement

Message par boubouk50 » 07 Avr 2020 21:38

Tu pourrais créer un component Bouclier qui se gère lui-même. Il fera le timer et la baisse des points durant celui-ci puis s'autodétruira à la fin du temps. Il te faudra l'instancier à la volée.
Tout ce qui est interne, calcul des points de vie, dégâts, timer, bonus, etc. Cet à toi de créer l'algo pour.
Concernant l'incrément, si tu le lies à une touche clavier, il te faut passer par la fonction Input.GetKeyDown ().
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

syanis94
Messages : 31
Inscription : 11 Nov 2018 16:23

Re: Modifier point de damage de l'adversaire provisoirement

Message par syanis94 » 07 Avr 2020 23:50

Tout d'abord merci pour votre réponse,

Commençons par le premier problème donc j'ai écris ce petit code, et ajouter un nouveau script bouclier à mon bouclier

dans le script PlayerController j'ai écris ce code mais il ne fonctionne pas j'ai pas compris pk ?

ici quand je clique sur espace sa lance cette coroutine :

Code : Tout sélectionner

StartCoroutine(LoadDelayed(1F, Bouclier, damage, GameObject.Find("Capsule").GetComponent<Bouclier>().damage));
print("Damage : "+  damage); // me renvoi 0 ?
voici la coroutine :

Code : Tout sélectionner

 IEnumerator LoadDelayed(float tempsEnSecondes, GameObject Bouclier, float i, float n)
    {
        yield return new WaitForSeconds(tempsEnSecondes);
        i = n;
        Bouclier.SetActive(false);
        print(i); // me renvoi 30
    }
Le problème dans la coroutine i il m'affiche une valeur exacte, mais le damage il me le renvoi 0 ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Modifier point de damage de l'adversaire provisoirement

Message par boubouk50 » 08 Avr 2020 11:08

Parce que tu traites une copie.

n est envoyé en paramètre en tant que copie, donc tu ne fais qu'afficher sa valeur.
Tu ne fais rien d'autre dedans, tu ne touches pas aux "damages".

Là, telle quelle, ta fonction prends des valeurs, attend temspEnSecondes puis désactive le gameObject. C'est tout, il n'y pas de traitement de valeur.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Scripting »