Erreur BCE0019 JS

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Idolo
Messages : 89
Inscription : 11 Mars 2015 10:16

Re: Erreur BCE0019 JS

Message par Idolo » 31 Mars 2015 23:37

-Pour la couleur, c'est normal car tu dois ajouter la variable pour le script en question au début puis mettre le code et finalement ajouter la variable pour le texte.
Et pour l'esthétisme de rajouter des 0 devant seconde et minute pour ma part je ne vois pas trop la solution miracle alors je le ferait en rajoutant manuellement une condition.
Donc on aura le TriggerStart.js comme ceci:

Code : Tout sélectionner

#pragma strict
var myStyle : GUIStyle;
static var TimerEnter = false;
private var startTimer:int;
private var minutes : int;
private var seconds : int;
private var centiemes : int;

function OnTriggerEnter() {
TimerEnter = true;
startTimer = Time.time;
}

function Update(){

    var time = Time.time - startTimer;
    minutes = time / 60;
    seconds = time % 60;
    centiemes = (time*100)%100;
}

function OnGUI () {
    myStyle.normal.textColor = Color.black;
		if (TimerEnter) {
		if (minutes <10){
			GUI.Label (Rect (10, 10, 100, 20), "Chrono: 0" +minutes, myStyle);
		}else{
			GUI.Label (Rect (10, 10, 100, 20), "Chrono: " +minutes, myStyle);
			}
		if (seconds < 10){
			GUI.Label (Rect (75, 10, 100, 20), " : 0" +seconds, myStyle);
		}else{
			GUI.Label (Rect (75, 10, 100, 20), " : " +seconds, myStyle);
			}
			
			GUI.Label (Rect (100, 10, 100, 20), " : " +centiemes, myStyle);
		}
		}
-Pour le temps de disparition il te suffit de mettre un chiffre plus gros dans

Code : Tout sélectionner

yield WaitForSeconds(2f);
A la place du 2.

-Pour restart le timer tu peux réutiliser le code du TriggerEnd.js

Code : Tout sélectionner

TriggerStart.TimerEnter = false;
Puis le relancer avec

Code : Tout sélectionner

TriggerStart.TimerEnter = true;
TriggerStart.startTimer = Time.time;
J'ai pas testé mais ça devrait marcher.

-Pour ton probléme de plateforme en sphère désolé je sais pas du tout ^^' je peux essayer de faire des tests si tu me donne plus d'informations lol

Désolé ca fait que 3 semaines que j'utilise Unity c'est pour ça que je n'ai pas repris tous tes scripts j'aurais eu plus du mal...

ColChope
Messages : 121
Inscription : 20 Juin 2014 19:13

Re: Erreur BCE0019 JS

Message par ColChope » 01 Avr 2015 16:36

Pas de soucis, ne t'inquiète pas ;)
Mais en fait, le truc, c'est que si je rajoute un zéro devant, quand j'attendrais plus de 10 sec, on aura marqué ça par exemple : 01:012;75...
J'ai essayé de modifier un truc avec mon ancien timer, et j'ai trouvé quelque chose de mieux, qui prend même les couleurs et la taille !
J'ai fait ça :

Code : Tout sélectionner

if (TimerEnter) {
         GUI.Label (Rect (10, 10, 100, 20), String.Format ("{0:00}:{1:00}:{2:00}", minutes, seconds, centiemes), myStyle);
      }
Sinon, quand mon message de fin s'affiche, il faudrait que le temps final s'affiche.
Avant, j'avais ça :

Code : Tout sélectionner

function OnGUI() 
{
    if(flag)
    {
    	style.fontSize = 30;
        style.normal.textColor = Color.black;
        style.fontStyle = FontStyle.Bold;
        var tps : String = String.Format ("{0:00}:{1:00}:{2:00}", lastMinutes, lastSeconds, lastCentiemes);
        GUI.Label(Rect(Screen.width/2-170, Screen.height/2-50, 100, 50), ("    Final time : " + tps + "\nMove forward to continue"), style);
    }
}
Tu sais comment le refaire ?

Et en gros, le problème de la sphère, c'est que j'ai créé une sphère, toute simple, avec un mesh collider et un box collider, de même taille, mais, quand je saute dessus, à partir d'une plateforme normale, une fois sur la sphère, je ne peux plus sauter...

Idolo
Messages : 89
Inscription : 11 Mars 2015 10:16

Re: Erreur BCE0019 JS

Message par Idolo » 01 Avr 2015 17:15

Pour le zero je te l'ai fais dans le script regarde bien dans mon post au dessus et du coup non ça ne fait pas 01:012;75 .
En gros ma condition c'est si c'est inférieur à 10 on change le texte pour qu'il y ai le 0.
(Pour le stringformat je sais pas encore l'utiliser ^^' )

Pour afficher le temps final tu peux dans le TrrigerEnd au moment d'arrivé (d'entrer en collision) sauvegarder les minutes secondes et centiéme dans d'autres variables (bien sûr avant de mettre fin au script TriggerStart) puis les afficher dans le même GUI que la Bravo.
En gros tu met les variables minutes seconds et centiemes en static dans le TriggerStart.
donc de:

Code : Tout sélectionner

private var minutes : int;
private var seconds : int;
private var centiemes : int;
à:

Code : Tout sélectionner

static var minutes : int;
static var seconds : int;
static var centiemes : int;
Puis tu modifie le TriggerEnd comme ceci:

Code : Tout sélectionner

#pragma strict
private var arriver = false;
var myStyle : GUIStyle;
var myStyle2 : GUIStyle;
var ResultMin:int;
var ResultSec:int;
var ResultCent:int;

function OnTriggerEnter() {
ResultMin = TriggerStart.minutes;
ResultSec = TriggerStart.seconds;
ResultCent = TriggerStart.centiemes;
TriggerStart.TimerEnter = false;
arriver = true;
}

function OnGUI () {
  myStyle.fontSize = 50;
  myStyle2.fontSize = 30;
		if (arriver) {
		GUI.Label (Rect (300, 300, 100, 20), "BRAVO", myStyle);
		if (ResultMin <10){
			GUI.Label (Rect (300, 400, 100, 20), "Final time: 0" +ResultMin, myStyle2);
		}else{
			GUI.Label (Rect (300, 400, 100, 20), "Final time: " +ResultMin, myStyle2);
			}
		if (ResultSec < 10){
			GUI.Label (Rect (480, 400, 100, 20), " : 0" +ResultSec, myStyle2);
		}else{
			GUI.Label (Rect (480, 400, 100, 20), " : " +ResultSec, myStyle2);
			}
		GUI.Label (Rect (530, 400, 100, 20), " : " +ResultCent, myStyle2);

			End();
					}
		}
		
function End () {
			yield WaitForSeconds(7f);
			arriver = false;
		}
Je pense qu'il y a mieux (c'est un peu brouillon) mais c'est le mieu que je puisse faire mdr.


Pour ta sphére quels sont les composants qu'elle a rigibody etc...? (fais un screen de l'inspector ça serait plus simple ^^)

ColChope
Messages : 121
Inscription : 20 Juin 2014 19:13

Re: Erreur BCE0019 JS

Message par ColChope » 01 Avr 2015 20:21

Voilà l'inspector de la sphère : http://image.noelshack.com/fichiers/201 ... apture.png

Pour l'autre, je vais essayer de refaire comme dans mon ancien timer. Je sais pas si je vais y arriver avec mes connaissances, mais je vais quand même tenter deux trois trucs.
Je te donne mes deux anciens scripts au cas où :
Timer :

Code : Tout sélectionner

#pragma strict
 
var startTimer:int;
var minutes : int;
var seconds : int;
var centiemes : int;
var style : GUIStyle;
 
 
function OnEnable () 
{
    Debug.Log("Script activé");
    startTimer = Time.time;
}
 
function Update () 
{
    var time = Time.time - startTimer;
    minutes = time / 60;
    seconds = time % 60;
    centiemes = (time*100)%100;
    //Debug.Log(String.Format ("{0:00}:{1:00}:{2:00}", minutes, seconds, centiemes));
    //Pour l'affichage en console
}
 
 
function OnGUI () 
{
	style.fontSize = 20;
	style.normal.textColor = Color.black;
    GUI.Label (Rect (10, 10, 100, 20), String.Format ("{0:00}:{1:00}:{2:00}", minutes, seconds, centiemes), style);
}

StopTimer :

Code : Tout sélectionner

#pragma strict

private var flag:boolean = false;
private var lastMinutes:int;
private var lastSeconds:int;
private var lastCentiemes:int;
var style : GUIStyle;
  
 
function OnTriggerEnter(other : Collider) 
{
	Timer.StopTimer();
}
 
function OnGUI() 
{
    if(flag)
    {
    	style.fontSize = 30;
        style.normal.textColor = Color.black;
        style.fontStyle = FontStyle.Bold;
        var tps : String = String.Format ("{0:00}:{1:00}:{2:00}", lastMinutes, lastSeconds, lastCentiemes);
        GUI.Label(Rect(Screen.width/2-170, Screen.height/2-50, 100, 50), ("    Final time : " + tps + "\nMove forward to continue"), style);
    }
}

function Reset() 
{
    flag = false;
}

Idolo
Messages : 89
Inscription : 11 Mars 2015 10:16

Re: Erreur BCE0019 JS

Message par Idolo » 01 Avr 2015 21:07

Pour ta sphére (qui enfaite semble d'origine) j'ai testé avec un third et first person et en effet il ne peut plus "sauter" il peut toujours avancer mais plus sauter ^^' .

Pour les script avec le mode string (beaucoup plus propre):
TriggerStart.js:

Code : Tout sélectionner

#pragma strict
var myStyle : GUIStyle;
static var TimerEnter = false;
private var startTimer:int;
static var minutes : int;
static var seconds : int;
static var centiemes : int;

function OnTriggerEnter() {
TimerEnter = true;
startTimer = Time.time;
}

function Update(){

    var time = Time.time - startTimer;
    minutes = time / 60;
    seconds = time % 60;
    centiemes = (time*100)%100;
}

function OnGUI () {
    myStyle.normal.textColor = Color.black;
		if (TimerEnter) {
		var Temps : String = String.Format ("{0:00}:{1:00}:{2:00}", minutes, seconds, centiemes);
			GUI.Label (Rect (10, 10, 100, 20), "Chrono: " +Temps, myStyle);
		}
		}
TriggerEnd.js:

Code : Tout sélectionner

#pragma strict
private var arriver = false;
var myStyle : GUIStyle;
var myStyle2 : GUIStyle;
var ResultMin:int;
var ResultSec:int;
var ResultCent:int;

function OnTriggerEnter() {
ResultMin = TriggerStart.minutes;
ResultSec = TriggerStart.seconds;
ResultCent = TriggerStart.centiemes;
TriggerStart.TimerEnter = false;
arriver = true;
}

function OnGUI () {
  myStyle.fontSize = 50;
  myStyle2.fontSize = 30;
		if (arriver) {
		var FinalTemps : String = String.Format ("{0:00}:{1:00}:{2:00}", ResultMin, ResultSec, ResultCent);
		GUI.Label (Rect (300, 300, 100, 20), "BRAVO", myStyle);
		GUI.Label (Rect (300, 400, 100, 20), "Final time: " +FinalTemps, myStyle2);
			End();
					}
		}
		
function End () {
			yield WaitForSeconds(7f);
			arriver = false;
		}
Edit: pour la sphére essaie comme ça ? :
Image

ColChope
Messages : 121
Inscription : 20 Juin 2014 19:13

Re: Erreur BCE0019 JS

Message par ColChope » 01 Avr 2015 22:24

Alors !
Au final, j'ai modifié ce que tu m'as dit dans TiggerEnd, et pour l'instant ça se passe plutôt bien.
Juste, à la fin, ça affiche bien le temps, mais sinon, quand on repasse dans le trigger (sans forcément faire exprès), ça change le temps en un nouveau temps ultérieur, comme si le chrono continuait (d'ailleurs il doit continuer du coup). Comment l'arrêter définitivement ?

Idolo
Messages : 89
Inscription : 11 Mars 2015 10:16

Re: Erreur BCE0019 JS

Message par Idolo » 01 Avr 2015 23:04

J'ai pas vraiment compris le problème ^^' autant détruire l'objet pour ne pas pouvoir relancer le chrono non ?
Ou alors si c'est vraiment important essaie en ajoutant une variable comme ceci:

TriggerStart

Code : Tout sélectionner

#pragma strict
var myStyle : GUIStyle;
static var TimerEnter = false;
private var startTimer:int;
static var minutes : int;
static var seconds : int;
static var centiemes : int;
static var EndChrono = false;

function OnTriggerEnter() {
TimerEnter = true;
startTimer = Time.time;
}

function Update(){
if(EndChrono ==false){
    var time = Time.time - startTimer;
    minutes = time / 60;
    seconds = time % 60;
    centiemes = (time*100)%100;
    }
}

function OnGUI () {
    myStyle.normal.textColor = Color.black;
		if (TimerEnter) {
		var Temps : String = String.Format ("{0:00}:{1:00}:{2:00}", minutes, seconds, centiemes);
			GUI.Label (Rect (10, 10, 100, 20), "Chrono: " +Temps, myStyle);
		}
		}
TriggerEnd

Code : Tout sélectionner

#pragma strict
private var arriver = false;
var myStyle : GUIStyle;
var myStyle2 : GUIStyle;
var ResultMin:int;
var ResultSec:int;
var ResultCent:int;

function OnTriggerEnter() {
ResultMin = TriggerStart.minutes;
ResultSec = TriggerStart.seconds;
ResultCent = TriggerStart.centiemes;
TriggerStart.TimerEnter = false;
TriggerStart.EndChrono = true;
arriver = true;
}

function OnGUI () {
  myStyle.fontSize = 50;
  myStyle2.fontSize = 30;
		if (arriver) {
		var FinalTemps : String = String.Format ("{0:00}:{1:00}:{2:00}", ResultMin, ResultSec, ResultCent);
		GUI.Label (Rect (300, 300, 100, 20), "BRAVO", myStyle);
		GUI.Label (Rect (300, 400, 100, 20), "Final time: " +FinalTemps, myStyle2);
			End();
					}
		}
		
function End () {
			yield WaitForSeconds(7f);
			arriver = false;
		}

ColChope
Messages : 121
Inscription : 20 Juin 2014 19:13

Re: Erreur BCE0019 JS

Message par ColChope » 01 Avr 2015 23:11

Je n'ai pas vu ce que tu as changé :/

Idolo
Messages : 89
Inscription : 11 Mars 2015 10:16

Re: Erreur BCE0019 JS

Message par Idolo » 01 Avr 2015 23:32

Le temps du chrono ne peux plus s'écouler une fois qu'on à passé le TriggerEnd.
Modifications: Ajout dans TriggerStart de la variable EndChrono, ajout d'une condition dans son Update, et activation (passage en true) de la variable dans le TriggerEnd ce qui par conséquent invalide le temps qui passe du chrono, tu peux aussi si tu veux ajouter la condition; "EndChrono ==false", dans la condition d'affichage du chrono.
Dans le TriggerStart à la ligne

Code : Tout sélectionner

if (TimerEnter) {
ce qui donnerait:

Code : Tout sélectionner

if (TimerEnter&&EndChrono ==false) {

ColChope
Messages : 121
Inscription : 20 Juin 2014 19:13

Re: Erreur BCE0019 JS

Message par ColChope » 03 Avr 2015 20:51

Ça marche bien en effet ! :D
Merci à toi ! ;)

Tu as des idées pour la sphère ? Je l'ai supprimée, pour en remettre une, mais je comprend toujours pas le problème O.o

Verrouillé

Revenir vers « (Js) Javascript »