[Résolu] Plusieur Probleme tuto FPS

Toutes les questions relatives aux tutoriels du site sont à poser à cet endroit.
Avatar de l’utilisateur
Shaowkan
Codeur
Codeur
Messages : 319
Inscription : 30 Sep 2012 12:37
Localisation : Marseille
Contact :

[Résolu] Plusieur Probleme tuto FPS

Message par Shaowkan » 01 Oct 2012 13:45

Salut je suis en ce moment le tuto FPS de kris et je rencontre plusieurs problèmes :

-A l'étape 7 : l'ennemi ne ce detruit pas.
-A l'étape 8 : L'IA ne me repère pas (j'ai tester avec print("toucher") , quand je lance rien ne s'inscrit dans la console)
-A l'étape 9 : L'IA ne se déplace pas correctement, Il vole.

Voila les deux code shootScript et ennemyScript (il n'y a pas d'erreur dans la console d'après unity)

ShootScript

Code : Tout sélectionner

var fireRate=0.30; //...Variable de délai entre chaque tir...
var impact:GameObject; //...Impact lors du tir...
var canFire=true; //...Variable autorisant le tir...
var shootSound:AudioClip;
var damage:float=5;

Screen.showCursor=false;

function Update () { //...Boucle
	if(Input.GetButton("Fire1")){ //...Si on clique sur le bouton gauche de la souris...
		Fire();  //...On lance la fonction fire()...
	}

}


function Fire() {
	if(canFire==true){ //...vérifie si on peut tirer...
	canFire=false;    //...on bloque la possibilité de tirer...
	FireOneShot();   //...On lance la fonction FireOneShot()...
	
	}
}

function FireOneShot(){
	audio.PlayOneShot(shootSound);
	var direction=transform.TransformDirection(Vector3.forward); //..Renvoie la direction devant la camera
	var hit:RaycastHit; //...On créé une nouvelle variable Raycast(rayon)...
	
	if(Physics.Raycast(transform.position,direction,hit,100)){  //...On lance un rayon de la camera vers la direction de la vue...
	tempRot=Quaternion.FromToRotation(Vector3.up,hit.normal); //...au point d'impact du rayon, on renvoie la valeur de la normale du rayon (une valeur de rotation) dans la variable tempRot
	Instantiate(impact,hit.point,tempRot);  //...a la position d'impact du rayon, on instantie l'objet impact avec la valeur de rotation tempRot
	
	
	
	if(hit.rigidbody){
	   hit.rigidbody.AddForce(1000*direction);
	  
	   }
	   
		hit.collider.SendMessageUpwards("makeDamage",damage,SendMessageOptions.DontRequireReceiver);
	   
}
		
	
	
	yield WaitForSeconds(fireRate);  //...On créé une pause dans la fonction d'une durée de la valeur de fireRate
	
	canFire=true;  //...A la fin de la pause on autorise le prochain tir
	
}
EnnemyScript

Code : Tout sélectionner

var hitPoints=20;
var explosion:Transform;

var characterLayer:LayerMask;
var gravity=20;
private var player:GameObject;
player=GameObject.Find("Player");

var visionAngle:float=45;
var visionRange:float=100;
private var distanceToPlayer:float;
private var canSeePlayer:boolean=false;

var hit:RaycastHit;

function Update(){
	seekPlayer();
	
}

function seekPlayer(){
	directionToPlayer=player.transform.position-transform.position;
	distanceToPlayer=Vector3.Distance(transform.position,player.transform.position);
	
	var playerAngle=Vector3.Angle(directionToPlayer,transform.forward);
	
	if((Mathf.Abs(playerAngle)<visionAngle && distanceToPlayer<visionRange) ||canSeePlayer==true){
		Physics.Linecast(transform.position,player.transform.position,hit,~characterLayer.value);
	if(hit.collider.name==player.collider.name){
		
		var movedirection=transform.forward;
		var tempRot=Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(directionToPlayer),2*Time.deltaTime);
		tempRot.x=0;
		tempRot.z=0;
		transform.rotation=tempRot;
		canSeePlayer=true;
			
	}
	
}

movedirection.y=gravity*Time.deltaTime;
var controller:CharacterController=GetComponent(CharacterController);
var flags=controller.Move(movedirection*3*Time.deltaTime);
}







function makeDamage(damage:float){  //...fonction gestion dommages de l'ennemi
	hitPoints=damage; //...On deduits des points de vie la valeur damage
	
	if(hitPoints<=0){  //...Si les points de vie sont inférieurs ou égaux a 0
	Instantiate(explosion,transform.position,transform.rotation); //...on instantie l'explosion
		Destroy(gameObject);
	}
}
Pouvez-vous m'aider ?? Merci d'avance
Dernière édition par Shaowkan le 02 Oct 2012 18:22, édité 1 fois.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Plusieur Probleme tuto FPS

Message par cayou66 » 01 Oct 2012 14:42

Salut,
un projet ne se limite pas aux scripts, tout un tas d'autres paramètres rentrent en compte. La scène contient beaucoup d'éléments cruciaux, comme par exemple les tags sur les objets, les layers, les paramètres, etc...
Il est difficile pour nous de te dire comme ça d'où vient le problème.
C'est pourquoi je te propose d'utiliser le débugeur, et si tu ne sais pas t'en servir, d'apprendre. Cet outil est indispensable pour un codeur digne de ce nom.

http://docs.unity3d.com/Documentation/M ... ugger.html

C'est clairement expliqué, et avec ça tu vas pouvoir t'arrêter pendant l'exécution de ton jeu dans une fonction, regarder l'état de toutes tes variables, faire des tests, etc etc...
Plus tu pratiqueras ça, plus tu seras à l'aise, car ce genre de difficulté que tu rencontres, c'est le quotidien du programmeur :)

Bonne chance, postes nous tes tests et tes pistes ici ;)

Avatar de l’utilisateur
Shaowkan
Codeur
Codeur
Messages : 319
Inscription : 30 Sep 2012 12:37
Localisation : Marseille
Contact :

Re: Plusieur Probleme tuto FPS

Message par Shaowkan » 01 Oct 2012 18:38

Ok , merci . Je regarde ça tout de suite ;)

edit : j'ai tester le débuggeur et j’obtiens des Warnings


J'ai même des Warnings sur des scripts Préfabs alors que je n'ai rien modifier (c'est normal ?? désolé je débute :/)

http://image.noelshack.com/fichiers/201 ... rnings.png

http://image.noelshack.com/fichiers/201 ... rerate.png

http://image.noelshack.com/fichiers/201 ... rflags.png

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Plusieur Probleme tuto FPS

Message par cayou66 » 01 Oct 2012 19:34

Les warning ne sont pas "grave",
il vaut mieux (même en JS) toujours préciser le type de ta variable.
Lorsque tu fais:

Code : Tout sélectionner

var toto = 0.30;
Rajoutes:

Code : Tout sélectionner

var toto = 0.30 : float;
Tu as aussi des warnings de variables non utilisées, faut juste faire un peu de ménage, mais rien qui explique pourquoi cela ne marche pas, à 1ere vue.

Avatar de l’utilisateur
Shaowkan
Codeur
Codeur
Messages : 319
Inscription : 30 Sep 2012 12:37
Localisation : Marseille
Contact :

Re: Plusieur Probleme tuto FPS

Message par Shaowkan » 01 Oct 2012 21:08

Ok, merci de ton aide :)

Petite précision , mon Player a bien le tag "Player" et l'ennemi a bien le Layer "Ennemi" .

Avatar de l’utilisateur
Shaowkan
Codeur
Codeur
Messages : 319
Inscription : 30 Sep 2012 12:37
Localisation : Marseille
Contact :

Re: [Résolu] Plusieur Probleme tuto FPS

Message par Shaowkan » 02 Oct 2012 17:15

J'ai résolu les deux problèmes de l'étape 8 et l'étape 9 ^^

j'ai refait un projet et j'ai recommencer le tuto mais cette fois sans les vidéo :lol:
Et la comme par magie l'ennemi me repère.

Pour le problème de l'ennemi qui vole , il me manqué ceci " - " a ce code :

Code : Tout sélectionner

 movedirection.y-=gravity*Time.deltaTime; 
je suis content d'avoir trouvé mes erreurs tout seul :)

Par contre j'ai pas trouvé la solution pour la destruction de l'ennemi.

édit : J'ai regarder la vidéo de l'étape 7 et j'ai remarquer que j'avais (encore) oublier le moins ici :

Code : Tout sélectionner

hitPoints-=damage;
Donc c'est bon tous est résolu , merci a toi cayou66 pour m'avoir aider :)

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: [Résolu] Plusieur Probleme tuto FPS

Message par cayou66 » 02 Oct 2012 19:01

Excellent, j'ai pas fais grand chose ;)
Je t'ai donné les outils, à toi de t'en servir :)

Bon courage pour tes futurs devs.

Verrouillé

Revenir vers « Tutoriels du site Unity3D-france »