Page 1 sur 2

pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 15:29
par beorn
bonjour,

j'en suis à l'étape 8 du tuto sur le FPS basique, qui sont vraiment d'une grande aide, d'ailleurs. j'ai deux questions à ce sujet :

1/ je ne comprend pas pourquoi dans le script "ennemy", la plupart des variables sont déclarées sauf directionToPlayer. après avoir lu plusieurs sujet identique sur le forum, personne ne la déclare, j'en déduis donc que ce n'est pas utile. quelqu'un peut-il m'expliquer pourquoi ? d'ailleurs, lorsque je compile, j'ai un message d'erreur me disant qu'il ne connait pas directionToPlayer. moi je trouve ça plutot logique, mais ça ne m'éclaire pas pour autant. je précise que même si j'ai déjà étudié des langages informatique, je débute complétement sur le javascript.

2/ comme dit juste avant, j'en suis à l'étape 8, où je devrais voir : ------TOUCHE----- dans la console en passant devant l'ennemie. or, quand je déclare directionToPlayer en var, il ne se passe rien, et quand je ne le déclare pas, voici l'erreur qu'il m'affiche :

Assets/Standard Assets/Scripts/mesScripts/ennemieScript.js(38,9): BCE0005: Unknown identifier: 'directionToPlayer'.

et voici mon code :
(petite précision, il y a des lignes en plus, où je fais apparaitre une épave de mon ennemie qui est un robot. j'ai aussi essayer de vérifier par un "print" si j'étais dans le champ de vue de l'ennemie)

Code : Tout sélectionner

#pragma strict


// Variables gérant la mort de l'ennemie

var pointsDeVie=20;//........................Points de vie de l'ennemie
var explosion : Transform;//.................variable de l'effet explosion
var epave : GameObject;//....................variable de l'objet "epave" qui apparait à la mort de l'ennemie

//Variable de calque

var characterLayer : LayerMask;//............variable de calque (permet, lors du tir, de ne pas toucher les boites de collision de l'ennemie)

//Variables d'Intelligence Artificielle

private var player : GameObject;//...........variable du joueur
player=GameObject.Find("joueur");//..........définition du joueur comme étant le first personn controller, renommé "joueur"
var visionAngle : float=45;//................variable de l'angle de vue de l'ennemie (45° de chaque coté = 90° en tout)
var visionRange : float=100;//...............variable de portée de vue de l'ennemie
private var distanceToPlayer : float;//......variable de la distance entre l'ennemie et le joueur
private var canSeePlayer : boolean=false;//..variable booléenne de vue du joueur par l'ennemie
var hit : RaycastHit;//......................variable vérifiant si l'ennemie voit le joueur grace à un rayon

//______________________________________________________________________________________________________________________________

// Fonction permanente

function update()
	{
	seekPlayer();//.......................................................................................Cherche le joueur en permanence
	}


// Fonction de recherche du joueur

function seekPlayer()
	{
	directionToPlayer = player.transform.position - transform.position;
	distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);
		
	var playerAngle=Vector3.Angle(directionToPlayer, transform.forward);
	
	if(Mathf.Abs(playerAngle)<visionAngle && distanceToPlayer<visionRange)
		{
		print("visible");
		Physics.Linecast(transform.position, player.transform.position, hit, ~characterLayer.value);
		
		if (hit.collider.name==player.collider.name)
			{
			print("-----TOUCHE!-----");
			}
		}
	}

// Fonction de Dommage et de mort de l'ennemie

function makeDamage(Damage:float)
	{
	pointsDeVie= pointsDeVie-=Damage;
	
	if (pointsDeVie<=0)
		{
		Instantiate(explosion,transform.position,transform.rotation);
		Instantiate(epave,transform.position,transform.rotation);
		Destroy(gameObject);
		}
	}
PS : désolé, je ne sais pas comment faire une liste déroulante.

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 16:56
par Max
Salut,

déclare var directionToPlayer : Vector3;

En suite, si il ne se passe rien, je suppose déjà qu'il serait mieux d'écrire Update() et non pas update(), attention à la case ;)

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 17:19
par beorn
et bien, rien qu'avec var (sans vector3) ça fonctionne. effectivement, il manquait la majuscule à update. du coup, ça tournait pas en boucle et donc il ne risquait pas de me voir.

donc, un grand merci à toi, Max. en revanche, je ne comprend toujours pas pourquoi sur les script des autres personnes, directionToPlayer n'est pas déclaré et ça ne pose pas de problème (j'ai essayé avant de dire ça) ?? je sais que ce n'est plus utile mais j'aime comprendre...

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 17:30
par cayou66
attention à la case
Je chipote, mais case c'est le mot anglais: "Case Sensitive", en français c'est la casse :mrgreen:

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 17:40
par Max
beorn a écrit :et bien, rien qu'avec var (sans vector3) ça fonctionne.
oui, JS est tolérant sur ce point. Mais perso, je pense que typer les données est une seine habitude (et surtout obligatoire avec certains langages). ;)

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 18:41
par Freelax
oui, JS est tolérant sur ce point
Quelle tristesse :lol:
Je chipote, mais case c'est le mot anglais: "Case Sensitive", en français c'est la casse :mrgreen:
En francais c'est une case sinon une 'casse' c'est ça :lol:

Image

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 18:54
par Max
:shock: T'as retrouvé ma vieille 405 GRD Turbo rouge ....

:lol:

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 19:03
par Freelax
:D

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 19:35
par Max
beorn a écrit : en revanche, je ne comprend toujours pas pourquoi sur les script des autres personnes, directionToPlayer n'est pas déclaré et ça ne pose pas de problème
arf, j'étais passé à coté de ta dernière question. Bon, le JS, c'est pas du tout ma tasse de thé (pas croyant, pas pratiquant), mais je pense que cela vient du #pragma strict qui t'impose un minimum de déclaration. Si tu le vire, tu devrais pouvoir 'varianter' à tour de bras sans barrière.... :mrgreen:

Re: pour comprendre un détail, étape 8 FPS basique

Publié : 17 Mai 2013 19:37
par cayou66
Non mais encore on va dire que je dis n'importe quoi :)

http://fr.wikipedia.org/wiki/Sensibilit ... 0_la_casse