Page 2 sur 2
Re: Problème Etape7 tuto FPS Basique
Publié : 20 Août 2012 12:39
par mustzaied
J'ai enfin trouvé mon erreur, l'envoi des paramètres à l'autre script doit être placé à l’extérieur de la condition
pour que ça marche
...... merci pour tout
Re: Problème Etape7 tuto FPS Basique
Publié : 20 Août 2012 20:41
par Franck
A oui, sinon ils sont "privés" au lieu de static je crois.
Re: Problème Etape7 tuto FPS Basique
Publié : 30 Sep 2012 17:15
par Shaowkan
Je me permet de remonté le topic car j'ai le même problème
L'ennemi ne se détruit pas.
Voila les codes mais il n'y a pas d'erreur dans la console d'unity.
shootScrip :
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
}
Ennemy Script :
Code : Tout sélectionner
var hitPoints=20;
var explosion:Transform;
function makedamage(damage:float){
hitPoints=damage;
if(hitPoints<=0){
Instantiate(explosion,transform.position,transform.rotation);
Destroy(gameObject);
}
}
Vous pouvez voir que "hit.collider.SendMessageUpwards("makedamage",damage,SendMessageOptions.DontRequireReceiver);" et bien a l'exterieur de "if(hit.rigidbody){}"
Vous pouvez m'aider svp ?