Jump to content
UnitySpain

MatiasMartin

Fosiles
  • Content Count

    16
  • Joined

  • Last visited

Community Reputation

1 Neutral

About MatiasMartin

  • Rank
    Iniciado
  1. Hola, lo entendiste perfecto creo yo. Estoy haciendo algo así (Como un Whatsapp, pero dentro de un juego). El tema es que para el chat ahora mismo que solo es texto, tengo un Text donde cada mensaje sigue al otro y por ende queda abajo lo mas nuevo y sube lo demas, el tema es ¿Como mando una imagen que vaya debajo del ultimo texto? Siendo que en un Text no se puede agregar una imagen. Lo que se me ocurre es que por cada mensaje se cree un nuevo Text y si se manda una imagen se cree un Raw image y así sucesivamente.
  2. Hola. Espero que puedan entender lo que necesito. Estoy creando una especie de Chat. Ya logre que se puedan comunicar mediante texto todos los usuarios que se conecten, inclusive cada uno con su usuario y tal. Lo que pretendo es lo siguiente, agregue un boton para acceder a la camara y ya puedo tomar fotos... la idea es que las fotos que se tomen salgan en la misma pantalla donde va el texto(Que es imposible por el momento ya que es un Text) ¿Existe algún elemento que pueda integrar tanto texto como imagenes? No se si la complique demasiado o se me entendio algo :S
  3. Gracias a todos. juanma, es así como lo hago ahora. El tema es que estoy programando una aplicación y la idea es que los clientes que la adquieran no tuvieran ese tipo de problemas, pero bueno, supongo que de venderla tendrá que ir acompañada de un manual o requerir el técnico pertinente. Supuse que no se podía pero no perdía nada con preguntar.
  4. Respondo yo mismo... el tema seria sustituir la linea: string hostName = System.Net.Dns.GetHostName();por algo así: string hostName = "154.215.2.154";De esta manera en vez de ir al host local, iría a la dirección IP que pongamos. Hago ya que estoy otra pregunta ¿Como abrir puertos desde una linea del script?
  5. Hola. Estoy haciendo un chat, el cual pretendo se conecte entre mi PC y un dispositivo Android. La cosa es que ya logre, mediante un script que encontré, que funcione dentro de mi red, o con los dispositivos que están en el mismo WI-FI.- Pero la idea es que se conecten a un servidor y así se pueda acceder desde internet y de cualquier lado. Esta es la función que se conecta a mi host local. ¿Alguien puede guiarme desde acá como conectar a una dirección en particular? Lo que pretendo es que hacer de mi maquina un servidor, que este online, y que ahí se conecte el celular aún cuando este fuera de la misma red. void OnServerInitialized() { string hostName = System.Net.Dns.GetHostName(); IPAddress [] listaIPs = System.Net.Dns.GetHostEntry(hostName).AddressList; miIP = listaIPs[0].ToString(); Debug.Log("Servidor On-line, tu IP: " + listaIPs[0]); chat = chat + "\r\n Conectado como servidor. Esperando usuarios"; }Desde ya muchas gracias. Cualquier ayuda sera bienvenida.
  6. Me baje el proyecto y no es multi touch. Osea, no sirve. Igualmente ya encontre como hacerlo con GUITexture en Unity 5. Si alguien lo necesita revise el post mas arriba.
  7. Hola. Te dejo mi código y mi método. Puede que no sea el mas adecuado pero no conseguí hacerlo andar de otra forma. Lo hago con GUITexture y son multi-touch pero en principio deberías saber que Unity 5 ya no da la opción de agregar directamente un GUITexture, así que vas a tener que agregar un GameObjectEmpty y a este un componente GUITexture por cada boton que quieras. A ese GameObjectEmpty, en su correspondiente GUITexture, le vas a agregar la textura UI o Sprite que desees como boton, siempre cambiando la propiedad de la imagen de "texture" a 2D UI o algo así, no recuerdo acá. De esta forma ya tenemos los botones en pantalla (Los vas a tener que ubicar, si no los ves los vas ubicando con el Transform). Ahora el código: using UnityEngine; using System.Collections; public class Botonera : MonoBehaviour { public GUITexture Avanzar; public GUITexture Retroceder; public GUITexture Derecha; public GUITexture Izquierda; public GUITexture Saltar; public GUITexture Prenderse; void Update() { if(Input.touchCount >= 0) { for (var i = 0; i < Input.touchCount; ++i){ Touch G = Input.GetTouch(i); if (G.phase == TouchPhase.Began) { if(Avanzar.HitTest(Input.GetTouch(i).position)){ MovCube.avanzar = true; Debug.Log ("Estas avanzando"); } if(Retroceder.HitTest(Input.GetTouch(i).position)){ MovCube.retroceder = true; Debug.Log ("Estas retrocediendo"); } if(Derecha.HitTest(Input.GetTouch(i).position)){ MovCube.derecha = true; Debug.Log ("Girando a la derecha"); } if(Izquierda.HitTest(Input.GetTouch(i).position)){ MovCube.izquierda = true; Debug.Log ("Girando a la izquierda"); } if(Saltar.HitTest(Input.GetTouch(i).position)){ SaltoCube.saltando = true; Debug.Log ("Estas Saltando"); }if(Prenderse.HitTest(Input.GetTouch(i).position)){ Pegarse.prenderse = true; Debug.Log ("Estas prendido"); } } if (G.phase == TouchPhase.Ended) { MovCube.derecha = MovCube.izquierda = MovCube.avanzar = MovCube.retroceder = SaltoCube.saltando = Pegarse.prenderse = false; } } } } } Ese código va en un script llamado botonera, que lo que va a hacer es modificar las variables, estáticas de los demás scripts donde estén los movimientos en si. Por ejemplo, este es el de moverse: using UnityEngine; using System.Collections; public class MovCube : MonoBehaviour { public float speed = 10; public float rotationSpeed = 3; public static bool derecha = false; public static bool izquierda = false; public static bool avanzar = false; public static bool retroceder = false; // Use this for initialization void Start () { } void Update () { if (Input.GetKey (KeyCode.W)|| avanzar == true) { transform.Translate(Vector3.forward * speed * Time.deltaTime); } if (Input.GetKey (KeyCode.S)|| retroceder == true) { transform.Translate(Vector3.forward * -speed * Time.deltaTime); } if (Input.GetKey (KeyCode.A)|| izquierda == true) { transform.Rotate(0,-rotationSpeed*Time.deltaTime,0); } if (Input.GetKey (KeyCode.D)|| derecha == true) { transform.Rotate(0,rotationSpeed*Time.deltaTime,0); } } } Como se puede ver, en el primer script llama a una variable bool estática de el segundo script y la modifica: MovCube.avanzar = true; En el script MovCube, se avanza de dos formas posibles, o apretando la W o una vez que se preciona el botón avanzar(GUITexture). Se me hace que no se entendió nada, pero es como yo lo hago. :S Los errores ortográficos me dio pachorra corregirlos.
  8. Mil gracias. Lo mantuve en el gameObject "Meta" por comodidad. Se que lo ideal es ponerlo en el Player, en mi caso "Auto"... pero como tengo el medidor de tiempo en "Meta" me convenia hacerlo ahí ya que estoy aprendiendo y quiero recordar después como lo hice. Acá dejo el codigo por si a alguien le sirve: using UnityEngine; using System.Collections; public class MedirTiempo : MonoBehaviour { public GUIText GuiTiempo1; public GUIText GuiTiempo2; public GUIText GuiTiempoTotal; float[] tiempos = {0, 0}; int checkpoint = 0; // Use this for initialization void Start () { //Posicion original: transform.position = new Vector3(0.4f,0.4f, 0); GameObject.Find ("Tiempo").transform.position = new Vector3(0.4f,0.1f, 0); GameObject.Find ("CheckPoint1").transform.position = new Vector3(0.25f,0.04f, 0); GameObject.Find ("CheckPoint2").transform.position = new Vector3(0.55f,0.04f, 0); GuiTiempoTotal.enabled = false; } // Update is called once per frame void Update (){ if (checkpoint == 0) { tiempos[0] += Time.deltaTime; } GuiTiempo1.text = tiempos[0].ToString ("f1"); if (checkpoint == 1){ tiempos[1] += Time.deltaTime; } GuiTiempo2.text = tiempos [1].ToString ("f1"); if (checkpoint == 2){ Debug.Log("Haz finalizado la carrera"); GuiTiempoTotal.enabled = true; } GuiTiempoTotal.text = "Tu tiempo fue: " + (tiempos [0] + tiempos [1]).ToString("f1") + " Segundos"; } void OnCollisionEnter(Collision coll){ if (coll.gameObject.name == "Auto") { Debug.Log ("Completaste la primer vuelta"); checkpoint++; } } } Saludos y gracias.
  9. Lo que intento hacer es lo siguiente. Tengo un "Auto" que avanza por una pista circular y cuando pasa sobre un plano "Meta" para un cronometro(CheckPoint) que mide cuantos segundos se tarda en dar una vuelta, para automáticamente parar ese cronometro y empezar el siguiente. El código lo metí en la "Meta" y cada vez que el auto pase por ella ocurre lo que dije. Lo que pasa es que al almacenar cada colisión en la variable "coll", una vez pase por la meta detiene todos los CheckPoint(Los pone a false) impidiendo que empiece el segundo y así sucesivamente. Podrías indicarme como se haría esto? Mas que nada en el OnColliderEnter() Ahí no se como meter la variable que declaro arriba. Desde ya muchas gracias. Si sabes otro método también te agradecería si me lo podes comentar. Saludos.
  10. Vuelvo a preguntar. "Eso" es una idea vaga que no funciono. El parametro que dice Adriel ya lo probe de esta manera: void OnCollisionEnter(Collision[] coll){ if (coll[0].gameObject.name == "Auto") { Debug.Log ("Completaste la primer vuelta"); checkpoint[0] = true; } } Y el error que me sale es el siguiente: Script error: OnCollisionEnter This message parameter has to be of type: Collision
  11. Hola. Paso a contarles. Tengo mi juego de carrera y la idea es que corra un cronometro por cada vuelta, es decir: Empieza en cero, cuando pasa la meta ese cronometro se para, empieza el segundo hasta que pasa la meta, este se para y luego se suman todos los valores para tener un resultado. Bueno, hice los cronometro en float con array, cada uno con su respectivo bool array para saber cuando estan funcionando. La cosa es que pude hacer que el primer cronometro empiece con la carrera, una vez cruzada la meta con un OnColliderEnter hago que el primer cronometro termine y con un if en el Update, si el cronometro 1 termino y el cronometro 2 esta en false, arranca el 2... Ahí surgio el problema, si en el OnColliderEnter pongo otro if, el segundo cronometro no arranca. Entonces pense hacerlo de nuevo con Array pero no anda. Paso el codigo y espero haberme explicado bien :S :S La idea es hacer un array aqui: void OnCollisionEnter(Collision[] coll = new Collision[2]){ if (coll[0].gameObject.name == "Auto") { Debug.Log ("Completaste la primer vuelta"); checkpoint[0] = true; } } Es posible hacer esto o hay alguna otra forma? Desde ya muchas gracias.
  12. El toco el botón seria con un Input.GetMouseButtonDown? Lo hice así y obviamente mueve el auto cuando acelero, pero el problema es que da igual donde toque la pantalla lo hace. Por lo que si solo acelero, ya dobla. using UnityEngine; using System.Collections; public class GirarDerecha : MonoBehaviour { bool derecha = false; void Update(){ if(Input.GetMouseButtonDown(0)){ derecha = true; if(derecha== true){ MovimientoDelAuto.derecha = true; Debug.Log("Doblando a la derecha"); } }if(Input.GetMouseButtonUp(0)){ derecha = false; } } } Necesito el boton solo para cambiar la variable bool "MovimientoDelAuto.derecha".
  13. Hola, ante todo muy buenos días. Hace poco me pase al Unity 5 y mi vida es hoy un infierno jajaj. La cosa es que estoy creando un juego de autos y necesito que, por ejemplo, si estoy acelerando y aprieto el botón "girar a la derecha", el auto no deje de acelerar. Es decir, que la pantalla detecte las dos cosas y haga las dos. Ya probé mil cosas, for, foreach, CrossPlatForm, Canvas, UI y nada nada. Se que esta ahí la cosa pero no puedo hacerlo andar, mire tutoriales, pero no eran lo que buscaba y trate de adaptarlo pero nada. Alguien puede decirme que usan para que se puedan apretar dos botones a la vez en la pantalla para algo tan simple como acelerar y doblar al mismo tiempo? Desde ya muchas gracias. Si necesitan mi código les paso. Saludos.
×
×
  • Create New...