[Urgent]Probleme avec un gain de vie au lieu de perte

Toutes les questions relatives aux tutoriels du site sont à poser à cet endroit.
Tony 1923
Messages : 83
Inscription : 22 Août 2011 16:48
Localisation : sur Toulouse
Contact :

[Urgent]Probleme avec un gain de vie au lieu de perte

Message par Tony 1923 » 15 Nov 2011 20:29

Bonjour, j'ai un soucis avec la perte de vie, lorsque l'on se fait tirer dessus, je gagne de la vie au lieu d'en perdre.
Un jour un ami m'a dit : "Attrape ton courage à deux main et affronte ton destin"
"Tout est en haut , Tout est en bas, Tout l'est."

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

Re: [Urgent]Probleme avec un gain de vie au lieu de perte

Message par cayou66 » 15 Nov 2011 20:37

Faut gagner de la vie, comme ça tu en perdra....
Ok je sors.
Dernière édition par cayou66 le 15 Nov 2011 21:43, édité 1 fois.

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

Re: [Urgent]Probleme avec un gain de vie au lieu de perte

Message par cayou66 » 15 Nov 2011 20:41

Un peu plus de détails sur ton problème?
tu fais peut être vie++ au lieu de vie--

Tony 1923
Messages : 83
Inscription : 22 Août 2011 16:48
Localisation : sur Toulouse
Contact :

Re: [Urgent]Probleme avec un gain de vie au lieu de perte

Message par Tony 1923 » 15 Nov 2011 20:57

voici le code :

Code : Tout sélectionner

var hitPoints=20;
var fireRate = 0.5;
var impact:GameObject;
var canFire = true;
var damageHit:float=4;



var shootSound:AudioClip;
Screen.showCursor=false;

private var gainPoints = 0;

private var menuScore:GameObject;
menuScore=GameObject.Find("ScorePoints");

private var hitPointsScore:GameObject;
hitPointsScore=GameObject.Find("ScoreHitPoints");

menuScore.GetComponent(GUIText).text="Score : "+gainPoints;
hitPointsScore.GetComponent(GUIText).text="PV : "+hitPoints;

function ApplyPoints(points:float){
	gainPoints=gainPoints+points;
	menuScore.GetComponent(GUIText).text="Kill : "+gainPoints;
}


function makeDamage(damage:float){
	hitPoints-=damage;
	hitPointsScore.GetComponent(GUIText).text="PV :"+hitPoints;
	
	if(hitPoints<=0){
		Application.LoadLevel(1);
	}
}

function Update () {
	if(Input.GetButton("Fire1")){
	fire();
	}
}

function fire(){
	if (canFire==true){
		canFire=false;
		FireOneShot();
	}
}

function FireOneShot(){
	audio.PlayOneShot(shootSound);
	
	var direction=transform.TransformDirection(Vector3.forward);
	var hit:RaycastHit;
	
	if(Physics.Raycast(transform.position,direction,hit,100)){
	
	tempRot=Quaternion.FromToRotation(Vector3.up,hit.normal);
	
	Instantiate(impact,hit.point,tempRot);
	
	if (hit.rigidbody){
	hit.rigidbody.AddForce(400*direction);
	}
	
	hit.collider.SendMessageUpwards("makeDamage",damageHit,SendMessageOptions.DontRequireReceiver);
	
}
	yield WaitForSeconds(fireRate);
	canFire=true;
	
}
Autre soucis, j'utilise

Code : Tout sélectionner

yield WaitForSeconds(31)
avant ma fonction pour tirer (autre script), ce que je ne comprends pas c'est pourquoi plus rien ne se passe après le WaitForSeconds.
Un jour un ami m'a dit : "Attrape ton courage à deux main et affronte ton destin"
"Tout est en haut , Tout est en bas, Tout l'est."

Tony 1923
Messages : 83
Inscription : 22 Août 2011 16:48
Localisation : sur Toulouse
Contact :

Re: [Urgent]Probleme avec un gain de vie au lieu de perte

Message par Tony 1923 » 15 Nov 2011 21:23

alors?
Un jour un ami m'a dit : "Attrape ton courage à deux main et affronte ton destin"
"Tout est en haut , Tout est en bas, Tout l'est."

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

Re: [Urgent]Probleme avec un gain de vie au lieu de perte

Message par cayou66 » 15 Nov 2011 21:51

Tony 1923 a écrit :alors?
Alors, alors, alors c'est un forum... On est pas constamment en train de rafraîchir la page en attendant que tu postes :evil:
Enfin, pour ton problème, je ne vois pas à 1ere vue, as-tu juste essayé de faire à la place de:

Code : Tout sélectionner

hitPoints-=damage;
faire:

Code : Tout sélectionner

hitPoints+=damage;
J'ai des doutes sur la valeur de damage, c'est peut être négatif. Tu peux aussi essayer d'afficher les damage pour voir.

Et pour ton WaitForSeconds, 31 secondes ça fait beaucoup :D
Le yield sert à dire qu'après cette ligne, la prochaine frame reprendra à partir d'ici (si j'ai bon). En gros ça fait l'action et ça laisse la main au reste de l'application.

Avatar de l’utilisateur
gabriel
Messages : 174
Inscription : 08 Oct 2011 22:32
Localisation : Devant mon clavier

Re: [Urgent]Probleme avec un gain de vie au lieu de perte

Message par gabriel » 15 Nov 2011 22:13

Autre soucis, j'utilise

Code : Tout sélectionner

yield WaitForSeconds(31)
avant ma fonction pour tirer (autre script), ce que je ne comprends pas c'est pourquoi plus rien ne se passe après le WaitForSeconds.
hé hé .... yield WaitForSeconds(31)

viewtopic.php?f=7&t=2491&p=13098#p13098

Je penses que tu gagnerais à lire cette pagehttp://www.siteduzero.com/tutoriel-3-52 ... -en-c.html, même si c'est c# :
1 - c'est de la programmation donc les concepts généraux sont applicables partout
2 - ca te servira dans unity
Prochainement sur vos écrans

Tony 1923
Messages : 83
Inscription : 22 Août 2011 16:48
Localisation : sur Toulouse
Contact :

Re: [Urgent]Probleme avec un gain de vie au lieu de perte

Message par Tony 1923 » 15 Nov 2011 22:17

merci
Un jour un ami m'a dit : "Attrape ton courage à deux main et affronte ton destin"
"Tout est en haut , Tout est en bas, Tout l'est."

Tony 1923
Messages : 83
Inscription : 22 Août 2011 16:48
Localisation : sur Toulouse
Contact :

Re: [Urgent]Probleme avec un gain de vie au lieu de perte

Message par Tony 1923 » 15 Nov 2011 22:20

voici l'autre script avec WaitForSecond :

Code : Tout sélectionner

var shootSound : AudioClip;
var bellSound : AudioClip;

var fireRate = 0.5;
var impact:GameObject;
var canFire = true;
var damageHit:float=4;


Screen.showCursor=false;

audio.PlayOneShot(bellSound);


function Update () {
	if(Input.GetButton("Fire1")){
	Canfire();
		}
}

function Canfire(){
	canFire=false;
	yield WaitForSeconds(30);
	canFire=true;
	fire();
	
}

function fire(){
	if (canFire==true){
		canFire=false;
		FireOneShot();
	}
}

function FireOneShot(){
	audio.PlayOneShot(shootSound);
	
	var direction=transform.TransformDirection(Vector3.forward);
	var hit:RaycastHit;
	
	if(Physics.Raycast(transform.position,direction,hit,100)){
	
	tempRot=Quaternion.FromToRotation(Vector3.up,hit.normal);
	
	Instantiate(impact,hit.point,tempRot);
	
	if (hit.rigidbody){
	hit.rigidbody.AddForce(400*direction);
	}
	
	hit.collider.SendMessageUpwards("makeDamage",damageHit,SendMessageOptions.DontRequireReceiver);
	
}
yield WaitForSeconds(fireRate);
	canFire=true;
}
Un jour un ami m'a dit : "Attrape ton courage à deux main et affronte ton destin"
"Tout est en haut , Tout est en bas, Tout l'est."

Tony 1923
Messages : 83
Inscription : 22 Août 2011 16:48
Localisation : sur Toulouse
Contact :

Re: [Urgent]Probleme avec WaiForSeconds

Message par Tony 1923 » 16 Nov 2011 15:28

alors pour waitforseconds, existerai-t-il une autre solution?
Un jour un ami m'a dit : "Attrape ton courage à deux main et affronte ton destin"
"Tout est en haut , Tout est en bas, Tout l'est."

Verrouillé

Revenir vers « Tutoriels du site Unity3D-france »