Page 1 sur 1

Problème Codage (Débutant)

Publié : 31 Août 2017 18:10
par Phrito
Bonjour,
Tout d'abord je tiens à dire que je suis débutant.
Bon, j'ai un problème dans le codage qui m'empêche d'avancer. J'ai regardé un tuto pour m'aider a faire un AI (Zombie) sur UNITY, je n'ai pas eu de bug jusqu'à présent :

Code : Tout sélectionner

 moveDirection = transform.forward;
 move Direction *= moveSpeed;

 moveDirection.y -= gravity * Time.deltaTime;
 controller.Move(moveDirection * Time.deltaTime);
}
Voici un bout du script, sur la deuxième ligne de code(move Direction *=moveSpeed;), UNITY me dit qu'il manque un point virgule à la fin de cette ligne, qui faudrait le rajouter, quel est le problème s'il vous plaît ? Merci.
Voici mon script entier :

Code : Tout sélectionner

	#pragma strict

var Distance;
var Target : Transform; 
var LookAtDistance : float = 100;
var chaseRange : float = 100;
var attackRange : float = 2.2;
var moveSpeed : float = 3;
var Damping : float = 6;
var attackRepeatTime : float = 1;

var TheDammage : float = 12; 

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);
	tranform.rotation = Quaternion.Slerp(transform.rotation, rotation,Time.deltaTime * Damping);
}

function chase (){
 GetComponent.<Animator>().Play("walk");

 moveDirection = transform.forward;
 move Direction *= moveSpeed;

 moveDirection.y -= gravity * Time.deltaTime;
 controller.Move(moveDirection * Time.deltaTime);
}

function attack(){
	if(Time.time > attackTime){
	 GetComponent.<Animator>().Play("attack");

	 Target.SendMessage("ApplyDammage", TheDammage); 
	 Debug.Log("The enemy has attacked");
	 attackTime = Time.time + attackRepeatTime;
	}

}

function ApplyDammage(){
	chaseRange += 20;
	moveSpeed += 2; 
	lookAtDistance += 40;
}

function FindHealth(){
	Target = GameObject.Find("PlayerStats").GetComponent(PlayerStats).transform;
}
 ! Message de : Max
Les balises code SVP
De plus, essais de faire un effort sur le titre, pour qu'il soit plus précis. On se doute qu'en postant dans cette section, il s'agit d'un problème de code.
Merci de lire la Netiquette.

Re: Problème Codage (Débutant)

Publié : 31 Août 2017 18:24
par Max
Bonsoir,

un soucis de relecture ?
tu écris:

Code : Tout sélectionner

 move Direction *= moveSpeed;
alors que tu aurais certainement plutôt du écrire:

Code : Tout sélectionner

 moveDirection *= moveSpeed;
non ?

Re: Problème Codage (Débutant)

Publié : 01 Sep 2017 03:45
par Phrito
    Je l'ai déjà fait, mais ça me donne beaucoup plus d'erreurs qu'il n'y en avait.

    En fait, l'erreur que ça me met quand j'écris ce code est : "Assets/AI/ZombieAI.js(53,6): UCE0001: ';' expected. Insert a semicolon at the end."

    Une idée ?

    Re: Problème Codage (Débutant)

    Publié : 01 Sep 2017 08:19
    par Max
    Bonjour,

    ce code, c'est un code tu as écrit toi même, ou qui vient d'un tuto ? Il comporte encore pas mal d'erreurs.
    Tu as des variables qui ne sont pas définis, comme par exemple moveDirection, ou lookAtDistance, ou encore AttackTime (que tu init dans start et qui ne semble jamais employée), tu as encore des erreurs de syntaxe (on voit tranform au lieu de transform par exemple), etc...

    Bref, reprend tout cela à tête reposée, ligne par ligne, en décryptant bien les messages d'erreur fournis dans la console, c'est important de savoir le faire. Et puis essais de prendre le temps d'acquérir les bases en terme de prog, qui semble visiblement te manquer.

    PS: quitte aller plus loin, et c'est un conseil qui ressortira pas mal ces prochains temps, essais plutôt de voir du coté du C#, qui sera très bientôt le seul langage supporté par Unity (le JS étant en fin de vie).

    Re: Problème Codage (Débutant)

    Publié : 01 Sep 2017 15:06
    par evereal
    Hello,

    Pour ton erreur, Max ta donné la bonne solution.
    Je l'ai déjà fait, mais ça me donne beaucoup plus d'erreurs qu'il n'y en avait.
    Après avoir bcq pleuré en voyant ça je vais y répondre.

    Les erreurs suivantes ne sont pas causées par la réparation de la première erreur, c'est juste que le compilateur ne comprend pas ce que tu fais et te demande une correction avant d'évaluer la suite de ton code.

    J'ai pas le temps de tout regarder mais j'ai vu des problèmes de minuscule/majuscule également, attention a la casse en programmation.

    Re: Problème Codage (Débutant)

    Publié : 03 Sep 2017 14:28
    par Phrito
    Les gens, j'ai trouvé comment résoudre, sauf que là j'ai encore une erreur que dont je ne sais pas c'est quoi le problème. L'erreur c'est :
    Assets/AI/Zombie/AI2.js(84,2): BCE0044: unexpected char: 0xFEFF.

    Help ?

    Re: Problème Codage (Débutant)

    Publié : 03 Sep 2017 14:43
    par Max
    bonjour,
    Phrito a écrit :
    03 Sep 2017 14:28
    L'erreur c'est :
    Assets/AI/Zombie/AI2.js(84,2): BCE0044: unexpected char: 0xFEFF.
    pars du principe que nous ne sommes pas devin. Donc poste ton code, qui ne semble pas être le même que précédemment.
    Merci.

    Re: Problème Codage (Débutant)

    Publié : 03 Sep 2017 15:29
    par Phrito
    Désolé, voici mon script :

    Code : Tout sélectionner

    #pragma strict
    
    var Distance : float ;
    var Target : Transform;
    var LookAtDistance : float = 20;
    var ChaseRange : float = 10;
    var AttackRange : float = 2;
    var MoveSpeed : float = 3;
    var Damping : float = 6;
    var AttackDammage : float = 10;
    var AttackRepeatTime : float = 1;
    var TheDammage : 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(TargetPosition, 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("walk");
    
     MoveDirection.transform.forward;
     MoveDirection *= MoveSpeed;
    
     MoveDirection.y -= gravity * Time.deltaTime;
     controller.Move(moveDirection * Time.deltaTime);
    }
    
    
    function attack () {
     if(Time.time > AttackTime){
     GetComponent.<Animator>.Play("attack");
    
     Target.SendMessage("ApplyDammage", TheDammage);
     attackTime = Time.time + attackRepeatTime;
     }
    
    }
    
    function ApplyDammage(){
     ChaseRange += 30;
     moveSpeed += 2;
     LookAtDistance += 500;
    }
    
    
    function FindHealth(){
     Target = GameObject.Find("PlayerStats").GetComponent.transform;
    
    
    
    }
    
    Et le bug :
    Assets/AI/Zombie/AI2.js(84,2): BCE0044: unexpected char: 0xFEFF.

    Re: Problème Codage (Débutant)

    Publié : 03 Sep 2017 15:54
    par Max
    Bonjour,

    Déjà, deuxième rappel sur l'emploi des balises code lorsque tu postes un script (la prochaine fois, je supprime ton message sans autre forme d'avertissement).

    En suite, pour l'erreur dont tu fais état dans ton dernier post (unexpected char: 0xFEFF.) cela vient visiblement d'un caractère bizarre en fin de script. Supprime ton dernier '}' ainsi que les sauts de ligne et réécrit la fin. Cela devrait régler le problème.

    Pour le reste, c'est toujours truffé d'erreurs, donc relis mon second message ainsi que celui d'Evereal, en particulier concernant les variables qui sont utilisées mais non définis, ainsi que les problèmes de minuscule/majuscule (la casse).
    De plus, lit la doc (et ses exemples) pour les fonctions de l'API.

    Par exemple cette ligne: MoveDirection.transform.forward;, tu cherches à faire quoi quand tu écris cela ?