- Home /
Problema comunicar script
Buenas tardes amigos, tengo una duda, realice un script el cual contiene la energía del personaje:
public int energia = 100;
en otro script contacto esta variable para irla reduciendo al tocar el fuego, osea, este script se lo puse al fuego:
public string mensaje; public Energia energiaPersonaje;
void Start(){ energiaPersonaje = new Energia(); mensaje = energiaPersonaje.energia.ToString(); }
void OnTriggerStay(Collider hit){ if(hit.gameObject.tag == "Player"){ energiaPersonaje.energia = energiaPersonaje.energia - 1; mensaje = energiaPersonaje.energia.ToString(); if(energiaPersonaje.energia == 0){ mensaje = "Estas muerto"; } } }
void OnTriggerExit(Collider hit){ if(hit.gameObject.tag == "Player"){ mensaje = energiaPersonaje.energia.ToString(); } }
void OnGUI(){ GUI.Label(new Rect(50,10,1500,50), "Vida: "); GUI.Label(new Rect(90,10,1500, 50), mensaje); }
en otro script, el cual se lo puse a un cubo, estoy tratando que al entrar en el, el personaje se cure:
private Energia energiaPersonaje; private Fuego fuegoEscena;//llamo al script 2 para usar su mensaje
void Start(){ energiaPersonaje = new Energia(); fuegoEscena = new Fuego(); }
void OnTriggerStay(Collider hit){ if(hit.gameObject.tag == "Player"){ energiaPersonaje.energia = energiaPersonaje.energia + 1; fuegoEscena.mensaje = energiaPersonaje.energia.ToString(); if(energiaPersonaje.energia == 100){ fuegoEscena.mensaje = "Te recuperaste!"; } } }
void OnTriggerExit(Collider hit){ if(hit.gameObject.tag == "Player"){ fuegoEscena.mensaje = energiaPersonaje.energia.ToString(); } }
el script 3 no me funciona como deseo, el personaje no se recupera de su energia, que puede estar mal?, gracias(:
Por favor cuando vas a poner código aquí, hay un boton arriba que tiene muchos 010101. Es para entrar código, y es mas facil para leer. Estas seguro que tu personaje tiene el tag "Player"?
Please format your code.
If you don't know how, watch the tutorial video on the right :)
Answer by churi24 · Nov 13, 2013 at 04:58 PM
public int energia = 100;
//en otro script contacto esta variable para irla reduciendo //al tocar el fuego, osea, este script se lo puse al fuego:
public string mensaje;
public Energia energiaPersonaje;
void Start(){
energiaPersonaje = new Energia();
mensaje = energiaPersonaje.energia.ToString();
}
void OnTriggerStay(Collider hit){
if(hit.gameObject.tag == "Player"){
energiaPersonaje.energia = energiaPersonaje.energia - 1;
mensaje = energiaPersonaje.energia.ToString();
if(energiaPersonaje.energia == 0){
mensaje = "Estas muerto";
}
}
}
void OnTriggerExit(Collider hit){
if(hit.gameObject.tag == "Player"){
mensaje = energiaPersonaje.energia.ToString();
}
}
void OnGUI(){
GUI.Label(new Rect(50,10,1500,50), "Vida: ");
GUI.Label(new Rect(90,10,1500, 50), mensaje);
}
//en otro script, el cual se lo puse a un cubo, estoy //tratando que al entrar en el, el personaje se cure:
private Energia energiaPersonaje;
private Fuego fuegoEscena;//llamo al script 2 para usar su mensaje
void Start(){
energiaPersonaje = new Energia();
fuegoEscena = new Fuego();
}
void OnTriggerStay(Collider hit){
if(hit.gameObject.tag == "Player"){
energiaPersonaje.energia = energiaPersonaje.energia + 1;
fuegoEscena.mensaje = energiaPersonaje.energia.ToString();
if(energiaPersonaje.energia == 100){
fuegoEscena.mensaje = "Te recuperaste!";
}
}
}
void OnTriggerExit(Collider hit){
if(hit.gameObject.tag == "Player"){
fuegoEscena.mensaje = energiaPersonaje.energia.ToString();
}
}
Ese es tu codigo... lo que veo es que usaste new Energia(); Te vas a comunicar con energia pero te va a inicializar los atributos. En vez de usar tantas variables statics, que te van a limitar la programacion, deberias usar algo como energiaPersonaje = GetComponent(); Quita todos los statics que pusiste para arreglar eso, borra el new Energia(); y reemplazalo por lo que te mencione. El GetComponent lo podes usar siempre y cuando el script este en el gameObject de tu personaje. Si esta en otra ubicacion lo vas a tener que buscar con un Find, y si haces esto, hacelo en el evento Awake por motivos de performance.
Saludos!
Answer by LAlejandroRS · Aug 23, 2013 at 04:42 PM
Listo amigos lo tendré en cuenta, gracias por sus respuestas, ya solucione el problema, simplemente tenia que usar las variables como static para poder manipularlas de script en script, buen dia (: