[Résolu] Plusieur Probleme tuto FPS
Publié : 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
EnnemyScript
Pouvez-vous m'aider ?? Merci d'avance
-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
}
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);
}
}