[RESOLU] MY-AL Appliqué une fonction une fois

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

[RESOLU] MY-AL Appliqué une fonction une fois

Message par Unity911 » 08 Fév 2017 22:55

Bonsoir j'ai crée un script mais je voudrais que la fonction ApplyDamage
augmente les stats de l'ennemie une fois.
Parce que a chaque balle qu'il recoit les stats augmente et l'ennemie se transforme en superman

Code : Tout sélectionner

#pragma strict

var Distance : float;
var Target : Transform;
var lookAtDistance : float = 20;
var chaseRange : float = 10;
var attackRange : float = 2.2;
var moveSpeed : float = 3;
var Damping : float = 6;
var attackRepeatTime : float = 1;

var damage : float = 10;

private var attackTime : float;

var controller : CharacterController;
var gravity : float = 20;

private var moveDirection : Vector3 = Vector3.zero;



function Start () {
attackTime = Time.time;
FindHealth();
}



function Update () {
Distance = Vector3.Distance(Target.position, transform.position);
if (Distance < lookAtDistance){
lookAt();
}

if (Distance < attackRange){
attack();
}

else if (Distance < chaseRange){
chase();
}
}



function lookAt (){
var rotation = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation,Time.deltaTime * Damping);
}



function chase() {
GetComponent.<Animator>().Play("creature1run");
moveDirection = transform.forward;
moveDirection *= moveSpeed;
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}



function attack() {
if (Time.time > attackTime){
GetComponent.<Animator>().Play("creature1Attack2");
Target.SendMessage("PlayerDamage", damage);
Debug.Log ("The enemy has attacked");
attackTime = Time.time + attackRepeatTime;
}
}



function ApplyDamage(){
chaseRange += 15;
moveSpeed += 2;
lookAtDistance += 20;
}



function FindHealth(){
Target = GameObject.Find("Player").GetComponent(HealthScript).transform;
}
Dernière édition par Unity911 le 10 Fév 2017 14:55, édité 2 fois.

Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

Re: MY-AL Appliqué une fonction une fois

Message par Unity911 » 08 Fév 2017 23:05

en gros je voudrais savoir dire au script "fait ça une fois"
mais je ne sais pas comment le faire :(

Avatar de l’utilisateur
Iwa
Messages : 1131
Inscription : 25 Avr 2012 16:20
Contact :

Re: MY-AL Appliqué une fonction une fois

Message par Iwa » 09 Fév 2017 10:59

Bien le bonjour,

La solution la plus "'simple" que je vois c'est de créer un booléen qui sert de drapeau (en gros il est à false tant que tu as pas appelé ta fonction ApplyDamage) et dans ta fonction ApplyDamage tu passes ce fameux booléen à true.

Au moment où tu veux l'appeler (je sais pas quand) il faut tester si ton booléen est à true ou false. Si il est à false, tu peux appeler ta fonction, sinon tu ne peux pas.

Voilà :)

P.S : Sinon tu peux éditer ton post quand tu veux rajouter des choses en cliquant sur la première icone du message en haut à droite :)
"N'est stupide que la stupidité Monsieur..." - Forest Gump
... sauf si tu lis pas ça :)

Si tu as tout ce qu'il te faut, merci de penser à basculer ton sujet en [RESOLU] en éditant ton tout premier post ;)

Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

Re: MY-AL Appliqué une fonction une fois

Message par Unity911 » 09 Fév 2017 13:19

non sa ne fonctionnerait pas.
enfaite la function ApplyDamage et appeler par a autre script de collisions Raycast(balle)
et l'autre script dis cas chaque collision:

Code : Tout sélectionner

hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
avec une boolean il passerait sur true a chaque balle donc sa ne changerait rien.
je voudrais que cette fonction ce joue une seule fois.
Sans modifier le script de raycast car autre fonction ApplyDamage pour les vies de l'ennemie.

La fonction ApplyDamage s'accumule a chaque appel du raycast
or je voudrais augmenter les stats de l'ennemie seulement une fois et pas a chaque balle reçut

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: MY-AL Appliqué une fonction une fois

Message par Moi 1971 » 09 Fév 2017 13:39

Bonjour,
Il te faut utiliser un booléen!

Code : Tout sélectionner

#pragma strict
....


Dernière édition par Moi 1971 le 09 Fév 2017 17:39, édité 1 fois.

Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

Re: MY-AL Appliqué une fonction une fois

Message par Unity911 » 09 Fév 2017 13:57

...
Dernière édition par Unity911 le 10 Fév 2017 14:54, édité 1 fois.

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

Re: MY-AL Appliqué une fonction une fois

Message par boubouk50 » 09 Fév 2017 14:20

Vous vous calmez, s'il vous plaît!
C'est pas la récré ici!

@Unity911: Si tu débutes en scripting, écoute ce que les gens te disent: si tu veux que ton script ne se joue qu'une seule fois, il te faut faire une condition pour le déterminer. Cette condition à besoin de 2 états: 1e fois = oui ou non? donc elle a besoin d'un booléen.
Aussi, merci de faire des efforts sur l'orthographe, dyslexie ou pas. Aujourd'hui, il existe des aides en ligne pour cela, tel http://bonpatron.com/, j'ai testé avec ton texte, il te montre 90% des erreurs.

@Moi1971: Encore entrain d'embêter les membres à l'écriture affreuse? Je ne sais pas ce que tu as écrit pour l'agacer comme cela, mais je te prierai de faire l'effort également de ne pas être agressif. Les efforts doivent être fait des deux côtés: relecture pour l'un, patience pour l'autre.
"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

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: MY-AL Appliqué une fonction une fois

Message par Moi 1971 » 09 Fév 2017 17:36

boubouk50 a écrit : @Moi1971: Encore entrain d'embêter les membres à l'écriture affreuse? Je ne sais pas ce que tu as écrit pour l'agacer comme cela, mais je te prierai de faire l'effort également de ne pas être agressif. Les efforts doivent être fait des deux côtés: relecture pour l'un, patience pour l'autre.
????!!!.. qu'ai-je écrit?
Je lui dis :
Bonjour,
Il te faut utiliser un booléen!
En confirmation de ce qu'a dit Iwa.
En suite, je lui donne la solution dans le code. et rien d'autre!
Il n'a même pas vu que je lui donnais la solution...
Est-ce mon problème si le gars prend pour lui la citation dans ma signature?
Je suis prié, je comprends...

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

Re: MY-AL Appliqué une fonction une fois

Message par boubouk50 » 09 Fév 2017 17:43

Au temps pour moi, au vu de sa réponse, j'ai pensé que tu avais écrit quelque chose concernant son écriture qui l'avait énervé puis édité ton post après coup. Il a juste flambé tout seul en vol, 911...
"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

Unity911
Messages : 24
Inscription : 08 Fév 2017 01:28

Re: MY-AL Appliqué une fonction une fois

Message par Unity911 » 10 Fév 2017 14:47

Erreur de ma part.
J'ai mal interprété son message.
je pensais qu'il s'adressait à moi.

Verrouillé

Revenir vers « (Js) Javascript »