[CF-RS] Désactiver une fonction quand une autre et active

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

[CF-RS] Désactiver une fonction quand une autre et active

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

Bonjour,
j'ai voudrais savoir comment désactiver la fonction "chase" quand la fonction "attack" et en marche.
Peut-être une boolean, mais je ne sais pas comment la mettre en place sur ce script vu qu'on ne peut pas transformer une fonction en boolean.

Code : Tout sélectionner

#pragma strict

var AnimHealth : int = 100;
var EnemyHealth : int;
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){
if (AnimHealth >= 50){
GetComponent.<Animator>().Play("creature1Attack1");
}
if (AnimHealth < 50){
GetComponent.<Animator>().Play("creature1Attack3");
}
Target.SendMessage("PlayerDamage", damage);
Debug.Log ("The enemy has attacked");
attackTime = Time.time + attackRepeatTime;
}
}


function ApplyDamage (damage : int){
chaseRange += 30;
moveSpeed += 0.2;
lookAtDistance += 40;
AnimHealth -= damage;
}




function FindHealth(){
Target = GameObject.Find("Player").GetComponent(HealthScript).transform;
}

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

Re: [CF-RS] Désactiver une fonction quand une autre et active

Message par boubouk50 » 10 Fév 2017 15:21

Code : Tout sélectionner

if (Distance < attackRange) {
	attack();
}
else {
	if (Distance < chaseRange){
		chase();
	}
}
Le fait que ton chase () soit dans le else de l'attaque, alors tu ne peux pas poursuivre et attaquer en même temps.
Par contre, Effectivement, si tu es dans une attaque et que la condition change alors tu peux passer en poursuite.
Il faut dans ta fonction Attack définir un booléen qui va donner l'état de ton perso: Attack ou poursuite.
Dans ta fonction pousuite, tu vérifies cette variable pour savoir si tu es en attaque ou non.

je ne suis pas fan de l'agencement, puisque tu appelles la fonction Chase () ou Attack () à chaque frame alors que tu devrais seulement définir un état. Le changement d'état devrait appeler la fonction qui se gérerait toute seule en attendant un changement d'état.
"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: [CF-RS] Désactiver une fonction quand une autre et active

Message par Unity911 » 10 Fév 2017 15:44

Comment je peux mettre sa en place sur le script, parce que je suis perdu. 8|
je veux faire sa parce que l'ennemie bouge un peu avant d'attaquer et c'est pas très esthétique. :/

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

Re: [CF-RS] Désactiver une fonction quand une autre et active

Message par Unity911 » 10 Fév 2017 16:00

je veux que quand la Distance < attackRange alors "Désactiver chase()"
si la Distance > attackRange alors "Activer chase()"
Mais je ne sais pas comment le mettre en place. :/

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

Re: [CF-RS] Désactiver une fonction quand une autre et active

Message par boubouk50 » 10 Fév 2017 16:14

Le booléen est le concept de programmation le plus simple à comprendre et à mettre en place. Je veux bien t'aider, mais je ne veux pas t'assister. Je suis au travail actuellement, et je passe trop de temps à aider des membres qui ne connaissent rien ni à Unity ni à la programmation mais qui veulent faire des jeux au delà de leur niveau.
Tu n'as pas de problème avec Unity, tu ne sais juste pas programmer. Et ici, on aide pour Unity. Des fois on dépanne sur la programmation, mais ce n'est pas le but. Et là, je stoppe. Donc, comme pour tout apprentissage, il faut commencer par le commencement:
viewtopic.php?f=89&t=13400&p=99655&hilit=pise#p99655
Ici, tu as la liste de plusieurs sites d'apprentissage de la programmation. Et il y en a partout sur le net.
"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: [CF-RS] Désactiver une fonction quand une autre et active

Message par Unity911 » 10 Fév 2017 16:26

je vois pas comment on peut dire chase() = false
unity dis que c'est pas possible

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

Re: [CF-RS] Désactiver une fonction quand une autre et active

Message par boubouk50 » 10 Fév 2017 16:36

La programmation se n'est pas associer des bouts ensemble. Ca répond à une logique. Là, tu essaies de faire en sorte qu'une fonction soit un booléen. C'est comme si tu essayais de réduire une maison à un parpaing.
Apprend à programmer, tu n'as pas d'autre choix si tu veux faire un jeu.
"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: [CF-RS] Désactiver une fonction quand une autre et active

Message par Unity911 » 10 Fév 2017 16:40

Le problème c'est qui a rien en français pour apprendre le javascript(unityscript).
Avant de poster j'ai beaucoup regarder sur internet et apparemment il est impossible de désactiver un fonction
(C'est je que j'ai lu sur le forum d'unity)

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

Re: [CF-RS] Désactiver une fonction quand une autre et active

Message par boubouk50 » 10 Fév 2017 16:44

Si tu apprenais les bases de la programmation, tu le saurais.
"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

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

Re: [CF-RS] Désactiver une fonction quand une autre et active

Message par Iwa » 13 Fév 2017 11:04

Unity911 a écrit :Le problème c'est qui a rien en français pour apprendre le javascript(unityscript).
Avant de poster j'ai beaucoup regarder sur internet et apparemment il est impossible de désactiver un fonction
(C'est je que j'ai lu sur le forum d'unity)

https://openclassrooms.com/courses/dyna ... javascript

Un cours, en français sur la programmation javascript. Ca va te donner les bases dans la première partie, après le reste s'attaque au web mais au moins la première partie à lire, comprendre/appréhender ça te filerais un petit coup de pouce.

En soit désactiver une fonction ne signifie pas grand chose, tu veux contrôler son appel, certes mais il te faut d'abord un petit peu de base et de compréhension sur ce que tu lis/veux faire :).
"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 ;)

Verrouillé

Revenir vers « (Js) Javascript »