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);
}
}