Problème avec mon système de santé :( (Fô se soigner...)

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
seithein
Messages : 44
Inscription : 01 Fév 2012 23:05

Problème avec mon système de santé :( (Fô se soigner...)

Message par seithein » 09 Juin 2013 22:11

[Modérateur]
Ce Sujet est à l'origine de Djidane, dont les messages ont étés supprimer par la modération.
[/Modérateur]


Salut,

si tu veux "téléporter" ton ennemie je dirai ça

Code : Tout sélectionner

function OnTriggerEnter (other : Collider) { //This checks for a collision. For this to work, the object needs to have a collider that is a trigger.
   HeartsGui.Hearts +=Amount; //Applies the damage by sending the data to the HeartsGui.js.
  if  (HeartsGui.Hearts<= 0)
    transform.position=new Vector3(-13f,9f,18f);
}
Si tu veux téléporter ton joueur qui a tué l'ennemie c'est plus compliqué.
En faite transform.position n'est pas une fonction de téléportation : ) simplement une fonction te permettant de mettre un objet à une place donnée.

D'ailleurs transform s'applique à un objet. Si tu écris

Code : Tout sélectionner

 transform.position=new Vector3(-13f,9f,18f);
c'est en fait

Code : Tout sélectionner

 this.transform.position=new Vector3(-13f,9f,18f);
This étant le script/objet dans lequel tu écris cette fonction.

Donc si tu souhaite téléporter ton joueur il faut que tu arrive à faire (par exemple).

Code : Tout sélectionner

monjoueur. transform.position=new Vector3(-13f,9f,18f);

seithein
Messages : 44
Inscription : 01 Fév 2012 23:05

Re: Problème avec mon système de santé :(

Message par seithein » 09 Juin 2013 23:01

tu veux téléporter qui (le joueur ou l'ennemie) ?

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: Problème avec mon système de santé :(

Message par Titan » 09 Juin 2013 23:13

ton script attaché à ton collider utilise à "HeartsGui", je suppose que tu a drag&drop cette variable dans ton inspector et que c'est une référence sur un script attaché à ta camera (ou un gameObject empty) ?
Je suppose également que ton script possédant le OnCollisionEnter est attaché à un projectile/un piège.

Le plus simple pour ton jeu est de mettre dans un script attaché à ton joueur
static LeNomDeTonScript unNomDeVariable;
et dans Awake() { unNomDeVariable = this; }
ensuite dans ton script de projectile/piége tu fait LeNomDeTonScript.unNomDeVariable.transform.etc pour le déplacer
(renseigne toi sur les statics, ça ne marche que dans ce cas précis, tu ne pourrais pas accéder à tes monstres de cette façon.)

sinon désolé de te décevoir mais ton script de vie et tout sauf "très bien conçu", et tu t'est clairement fait arnaqué :)
un code propre donnerai:

Code : Tout sélectionner

public Texture2D[] heartsTex = new Texture2D[5];

int heartP = 4;
public int hearts
{
   get { return heartP ; }
   set 
   {
      heartP = Mathf.clamp(value, 0, 4);
      guiTexture.texture = heartsTex [heartP];
   }
}
remplace ton code par le miens; ça fera 3€ ;)
Dernière édition par Titan le 10 Juin 2013 00:21, édité 3 fois.
____________________________________________
Hop Boy

seithein
Messages : 44
Inscription : 01 Fév 2012 23:05

Re: Problème avec mon système de santé :(

Message par seithein » 09 Juin 2013 23:29

Titan à totalement raison. Mais j'ai peur que ton niveau en code ne te permette pas de saisir toutes le nuances. Même si on arrive à t'aider sur ce point, j'ai peur qu'il te faille essayer de suivre quelque tutos pour avancer. sinon tu risque de re bloquer dans pas longtemps.

Cela dit, pour ton pb. Si le script

Code : Tout sélectionner

var Amount : int = -1; //This is the amount of damage this does to the character.

function OnTriggerEnter (other : Collider) { //This checks for a collision. For this to work, the object needs to have a collider that is a trigger.
   HeartsGui.Hearts +=Amount; //Applies the damage by sending the data to the HeartsGui.js.
   
}
est effectivement attaché à ton ennemie. Je dirai que tu veux que qd le joueur touche un ennemie il perde un coeur. Si c'est ça tu devrai pourvoir te contenter d'utiliser :

Code : Tout sélectionner

var Amount : int = -1; //This is the amount of damage this does to the character.

function OnTriggerEnter (other : Collider) { //This checks for a collision. For this to work, the object needs to have a collider that is a trigger.
   HeartsGui.Hearts +=Amount; //Applies the damage by sending the data to the HeartsGui.js.
if  (HeartsGui.Hearts<= 0)
   other.transform.position=new Vector3(-13f,9f,18f);
}
Ce qui veux dire que tu applique la nouvelle position à l'objet qui est entrée en collision avec l'ennemie. Et si j'ai bien compris il s'agit du joueur.
Sinon essai de détailler plus.

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: Problème avec mon système de santé :(

Message par Titan » 09 Juin 2013 23:59

Ma suggestion de code est remplaçable tel quel, sans aucun autre changement dans ton code, si tu le souhaite.
(que je viens d'éditer pour que l'accesseur ai le même nom que dans ton script ce qui te permet de ne rien retoucher d'autre pour que ça marche)
Et si tu à d'autre commandes à passer pour 1 euro la ligne, n'hésite surtout pas à me contacter.



Maintenant, c'était un post scriptum qui n'avais absolument rien à voir avec la réponse que je t'ai donné:
Je t'ai dit comment faire pour téléporter ton joueur (ta GUI texture est forcément appliquer sur un gameObject, mais la encore ça n'a aucune importance).
Ça ne sert a rien que je retape ma réponse, mais relis-la, il y a tout les éléments pour téléporter ton joueur.

edit: j'avais pas lu la réponse de Seithan, il a raison, je suis con, vu que t'es en collision avec le gameObject du joueur, t'a juste à faire ce qu'il a dit et c'est réglé;
j'aurai juste rajouté un petit test de tag parce que là si ta 2 monstres qui se croisent tu va perdre de la vie.

Le plus propre serait d'avoir une fonction respawn() -de même qu'une fonction receiveDamage(int)- sur le script de ton joueur tout de même pour pas violer ton encapsulation, mais je te parle certainement chinois.
Dernière édition par Titan le 10 Juin 2013 00:20, édité 8 fois.
____________________________________________
Hop Boy

seithein
Messages : 44
Inscription : 01 Fév 2012 23:05

Re: Problème avec mon système de santé :(

Message par seithein » 10 Juin 2013 00:04

edit

Code : Tout sélectionner

if  (HeartsGui.Hearts<= 0)
   other.transform.position=Vector3(-13f,9f,18f);

Code : Tout sélectionner

new Vector3(-13f,9f,18f) 
c'est du C#
en js c'est juste

Code : Tout sélectionner

Vector3(-13f,9f,18f) 

seithein
Messages : 44
Inscription : 01 Fév 2012 23:05

Re: [RESOLU]Problème avec mon système de santé :(

Message par seithein » 10 Juin 2013 10:52

C'est peut-être moi, mais le merci en début de paragraphe ne colle pas vraiment avec la suite du texte :)
et n'avait rien à voir avec ce que vous m'avez montré
Tu n'étais pas obligé de préciser. D'autant que je ne suis pas certain que tu sois en mesure de comparer les solutions.
Dans ton monde, tu as raison car ton script fait finalement ce que tu veux.
Dans notre monde (ou du moins le mien), le script js que tu nous dis avoir acheté nous file des plaques d’urticaire dans le dos. Si nous étions sous le régime de l'inquisition des développeurs (si si ça existe), un émissaire aurait déjà été dépêché et le "développeur" de ce script "4coeurs" serait déjà en train de bruler vif sur un bûché.

Un troll pour un conseil : Ne froisse pas les gens qui te réponde. Pour ma part je me tiendrai éloigné de tes éventuelles prochains posts : )

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: [RESOLU]Problème avec mon système de santé :(

Message par Titan » 10 Juin 2013 11:27

laisse moi deviner, dans ton script de GUI tu a rajouté une référence vers le joueur, et dans ta forêt de if tu a rajouté "if(hearts == 0) player.transform.position = xxx" ?

Pour rajouter un dernier conseil dont tu n'a rien à faire, ton jeu tu le finira pas et tu n'en fera rien... mais c'est pas un problème, tant que tu apprend des choses en le faisant, n'oublie pas que c'est ça qui est important.
____________________________________________
Hop Boy

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: [RESOLU]Problème avec mon système de santé :(

Message par Titan » 10 Juin 2013 18:16

Le problème en programmation c'est pas tant le nombre de lignes que l'endroit ou elle sont placé, il vaut mieux mettre 1000 lignes dans la property que je t'ai présenté qu'une seul dans le Update; Update est un segment critique qui est appelé 120 fois par secondes.

Comme j'ai essayé de te le faire comprendre dans mon précédent message, mais tu y a malheureusement lu "j’espère que tu va te planter", trouver pourquoi le code que je t'ai donné ne fonctionne pas est infiniment plus important que de terminer ton jeu. Tu sais "Ce n'est pas la destination mais la route qui compte", la philo, toussatoussa. Prend du recul sur ton projet, demande toi pourquoi tu fait un jeu -nul et auquel personne ne va jouer-.

Mais je m’arrête là moi aussi, je fait 50 ans de plus d'un coup :?
____________________________________________
Hop Boy

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: Problème avec mon système de santé :(

Message par ZJP » 10 Juin 2013 18:39

Djidane a écrit :Merci à tous pour vos réponses, un ami m'a dépanné en ligne. Problème réglé (ce n'était pas aussi simple que je le pensait et n'avait rien à voir avec ce que vous m'avez montré.)

Du coup le script tel qu'il est, qu'on à modifié ensemble fait bien ce que je lui demande : Me téléporté au point voulu après avoir perdu mes 4 cœurs, cordialement.
Les solutions proposées correspondaient parfaitement à ta demande initiale. En revanche, nul ne peut présumer de tes capacités à les mettre en application (La preuve. Le code était effectivement bon, le souci était ailleurs.).
La solution de l'ami est sans doute une parmi d'autres avec l'avantage qu'il ÉTAIT en ligne. Il a sans doute...compensé.

Djidane a écrit :
..Pour rajouter un dernier conseil dont tu n'a rien à faire, ton jeu tu le finira pas et tu n'en fera rien... mais c'est pas un problème, tant que tu apprend des choses en le faisant, n'oublie pas que c'est ça qui est important.
Je pense qu'il ne sert à rien d'être aussi désagréable et susceptible, je ne pense pas t'avoir manqué de respect, pour ta gouverne, le jeu finira bel et bien, ne t'en déplaise, il à déjà pris sa direction dès le départ, le concept est nouveau, les graphismes et les personnages sont très pros, la dernière tâche ne dépendant que de cette étape (résolue) les maps ont juste à suivre, ce n'est qu'une question de temps.

Je suis surtout venu demander de l'aide car mon collègue à un nouveau travail, que je ne veut pas prendre sur son temps libre. Il est très doué avec de longues études derrière. C'est aussi grâce à son travail que le jeu SORTIRA.

J'ai par le passé été au bout de mes 3 projets de jeux, je ne vais pas faire une rature maintenant.
Je doute que Titan ait explicitement souhaité que ton jeu ne sorte. Cela voulait dire "Pas grave si tu ne finis pas ton jeu et qu'il ne sorte pas...etc..."
Lire correctement entre les lignes, tout un art. Parfois, il est préférable de se plonger dans les précédents commentaires d'un membre du forum (je fais cela tout le temps). Cela dit, tu as piqué ma curiosité : je suis maintenant curieux de "voir" ces trois précédents projets terminés. :mrgreen:

Verrouillé

Revenir vers « Scripting »