Lucho31 0 Report post Posted March 4, 2016 Hola chicos, veran, he tratado de escribir un codigo el cual me permita desactivar un objeto presionando una tecla y que despues de algunos segundos este objeto vuelva a acivarse, con documentacion escribi algo asi:using UnityEngine;using System.Collections;public class Activate : MonoBehaviour { public GameObject Crosshair; void Start (){ if (Input.GetButtonDown ("Reload")) ; { Crosshair.gameObject.SetActive (false); } } void ModeSelect(){ StartCoroutine("Wait"); } IEnumerator Wait() { yield return new WaitForSeconds(5); Crosshair.gameObject.SetActive (true); }} El cual no me da ningun error, pero no me funciona en absoluto.No soy muy bueno programando debido a que no llevo mucho tiempo con Unity y estoy aprendiendo de forma autodidacta...¿Como podria lograr realizar lo que necesito?Me vendria muy bien su ayuda, les agradeceria tanto que me pudieran ayudar. Share this post Link to post Share on other sites
juanma_teso 159 Report post Posted March 4, 2016 Cual es el botón "reload"?? La función start se ejecuta una sola vez al principio del nivel, debes poner la condición en el Update(), la función ModeSelect tienes que llamarla en algún momento para que se ejecute, puedes ponerla después de desactivar el objeto. Share this post Link to post Share on other sites
francoe1 474 Report post Posted March 4, 2016 ¡Fíjate si esto te sirve! Saludos! Share this post Link to post Share on other sites
Lucho31 0 Report post Posted March 4, 2016 @juanma_teso El boton reload es la tecla R, lo puse asi ya que desde el input asi lo nombre...¿podrias explicarme mas sobre la funcion ModeSelect?Te lo agradeceria mucho, Share this post Link to post Share on other sites
GSG3D 150 Report post Posted March 4, 2016 Tenes una funcion que nunca es llamada, luego de desactivar el objeto deberias llamarla mediante ModeSelect, creo que deberias aprender las bases de programacion para continuar sin tropiezos, y claro sobre la api de Unity ya que eso deberia estar dentro del Update. Share this post Link to post Share on other sites
ACarranza 54 Report post Posted March 4, 2016 @juanma_teso El boton reload es la tecla R, lo puse asi ya que desde el input asi lo nombre...¿podrias explicarme mas sobre la funcion ModeSelect?Te lo agradeceria mucho,pero pues la funcion ModeSelect tu la escribiste, a ver sin nada de codigo,explicanos como funciona tu codigo n__n de ahi partimos , saludos Share this post Link to post Share on other sites
Lucho31 0 Report post Posted March 4, 2016 pero pues la funcion ModeSelect tu la escribiste, a ver sin nada de codigo,explicanos como funciona tu codigo n__n de ahi partimos , saludosNo lo escribi exactamente yo, por eso dije que con documentacion lo escribi...Pues basicamente la funcion del codigo seria que al presionar el boton "Reload", osease Rla variable Crosshair se desactivaria, desactivando al GameObject que en ella estay despues de unos segundos, esta volveria a activarse...Se que esta mal algo en el codigo, pero no logro comprender que es debido a que mis conocimientos son pocos Share this post Link to post Share on other sites
ACarranza 54 Report post Posted March 4, 2016 No lo escribi exactamente yo, por eso dije que con documentacion lo escribi...Pues basicamente la funcion del codigo seria que al presionar el boton "Reload", osease Rla variable Crosshair se desactivaria, desactivando al GameObject que en ella estay despues de unos segundos, esta volveria a activarse...Se que esta mal algo en el codigo, pero no logro comprender que es debido a que mis conocimientos son pocosoks entonces a ver, cual es la diferencia entre los metodos Awake, Start , Update, FixedUpdate ? investiga un poco de eso y me respondes y de ahi le seguimos, te prometo que al final encontras la solicion , solo ten paciencia y veme contestando las preguntas n_n saludos. Share this post Link to post Share on other sites
juanma_teso 159 Report post Posted March 4, 2016 La función ModeSelect no es una función especial ni nada del estilo, es una función que tú has creado, esa función hace lo que tú le ordenes en las líneas que lleve dentro, esa función la debes llamar en algún momento para que se ejecute. Primero te diré que si quieres tomar los videojuegos como hobby o como algo un poco serio, aprendas a programar o diseñar, a veces en el foro olvidamos que no todo es código jaja, segundo, los fallos que tienes es que estás usando mal las funciones del MonoBehaviour, se ve que por lo menos has intentado hacerlo por tu cuenta, lo que debes hacer es poner las líneas que tienes en el Start() dentro del Update(), dentro de la condicional que has hecho, puedes poner tantas líneas como quieras, en la primera desactivas el objeto, que no la variable, en una segunda línea llamas la función ModeSelect(), que a su vez empezará la corrutina Wait(). Share this post Link to post Share on other sites
Jorge Alejandro 2 Report post Posted March 14, 2016 Asi es como posiblemente quedaria tu codigo segun lo que dices (timeR es el tiempo para la activacion):var Crosshair : GameObject;var timeR : float = 2.0ffunction Update () { if(Input.GetKeyDown("Reload")){ Crosshair .SetActive(false); Invoke("ActivateNow", timeR); }}function ActivateNow () { Crosshair .SetActive(true);} Share this post Link to post Share on other sites