Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 09/26/2020 in Posts

  1. 3 points
    Hola! @Megadok para hacer ese uso es muy simple. Lo enums son tratados no solo con los nombre que les des(espada, arco,etc) sino que por defecto tiene un index asociado comenzando desde 0. Por lo que si queres que tu variable _arma sea igual a lanza por ejmplo solo tendrías que castear el tipo armas delante del index correspondiente a lanza(que sería 2). Te dejo un ejemplo. public enum armas { espada, //0 arco, //1 lanza, //2 hacha //3 } public armas _armas; private void Start() { //el casteo se hace poniendo entre parentesis el tipo que te interesa obtener _armas = (armas)1; //esto hara que _armas sea "arco" } //Con tu codigo seria asi string[] r = System.Enum.GetNames(typeof(armas)); for(int i=0;i<r.Lenght;i++){ _armas = (armas)i; }
  2. 2 points
    No lo sé, pero San Google me dice que ... https://stackoverflow.com/questions/6435099/how-to-get-datetime-from-the-internet
  3. 2 points
    En tal caso puedes buscar la hora y la fecha a través de la red, ya sea un servidor propio o uno público.
  4. 2 points
    Primero: no uses // para cada linea, si quieres comentar un un metodo u otro texto largo, usa /* .... */. Segundo: En respuesta a tu pregunta. Deberías manejar el inventario y pickup objects desde el jugador, porque si vas a implementarlos en cada objeto 'Item', que pasará cuando quieras instanciar 1K items en la escena?, Tendrás 1K scripts ejecutando funciones de eventos en cada frame innecesariamente?. Usa un único sistema que manejé los eventos de colisión, entonces, cuando tu jugador este cerca a un objeto, se active un método que verifique si hay o no, espacio en el inventario. Y cuándo digo "UN" es solo uno, en tu primer script hay un método (RecogerObjeto ()) que se activa cuando se cumple un if, Fatal! Que pasa si ese if nunca cambia de estado? Seguirías llamando el método una, otra y otra vez, usando innecesariamente la CPU. En su caso, usa los eventos de colisión para preguntar una vez si hay espacio en el inventario. Si la respuesta es falso, evita hacer una nueva llamada a la función, entonces cuando el usuario elimine un item de su inventario, lanza otra función que diga algo como "Inventario actualizado, realiza una llamada a los triggers a ver si hay items para recoger", esto sería un optimización drástica al la manera en que está planteada tu actual idea.
  5. 2 points
    Dale un vistazo alas funciones seno y coseno, de trigonometría. A cada una de ellas, introduciendo un ángulo (en radianes) te devolverá la posición en X e Y respectivamente. Creo que la siguiente imagen muestra de una forma muy didáctica que es el seno y el coseno en un círculo de radio 1.
  6. 2 points
    Tal vez el error este aquí. Calle.transform.position = new Vector3( transform.position.x, piezaAux.GetComponent<Renderer>().bounds.size.y + piezaAux.transform.position.y, piezaAux.transform.position.z); La coordenada x debería ser Calle.transform.position.x en lugar de transform.position.x
  7. 1 point
    Parece funcionar...aunque desafortunadamente, como mencionas, para que realmente tenga efecto el cambio en el shader necesito cambiar el Optimized Material del árbol, cosa que hacer que se vea horrible:/ Pero bueno...parece ser la única opción viable por el momento
  8. 1 point
    Al final lo he logrado gracias a este videotutorial How to get time from internet Gracias por las ideas , me sirvieron de mucho. Un saludo.
  9. 1 point
    Buenas gente, vengo a comentaros una duda sobre algo que quiero hacer: Me gustaria hacer un temporizador que aunque el juego se apague siga funcionando, en plan estos juegos que cada 24 horas se reinician unos objetos en una tienda, o unas misiones diarias. Si alguien sabe algo por favor me lo intente explicar. Gracias de antemano
  10. 1 point
    el problema de coger las horas desde el dispositivo esq es muy facil hacer los cheats
  11. 1 point
    No se hace como creo que pretendes hacer. El juego no se deja de fondo, trabajando "offline". Lo que se hace es guardar la fecha y hora de salida. Cuando se vuelve a iniciar el juego se compara la fecha y hora actual con la almacenada, de aquí se calcula el tiempo transcurrido y se entregan las recompensas apropiadas. A lo mejor encuentras interesante ese enlace https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
  12. 1 point
    Puedes probar a utilizar la fecha del dispositivo donde se ejecuta el juego. Cuando se cierra guardas la fecha y cuando vuelve a arrancar comparas con la fecha actual. Tiene la desventaja de que el jugador puede manipular dicha fecha y explotar esa mecánica pero offline es de lo más sencillo que tienes.
  13. 1 point
    Las ultimas modificaciones que he realizado, antes las fuentes de enemigos eran internas y no se podían modificar, ahora son externas, se pueden modificar, sus parámetros, posición y tipos de enemigos, además están enlazadas a las misiones, que también se pueden añadir y modificar. He añadido un nuevo tipo de arma para compañeros, y barbas en 3D con uno modificador, antes eran simples texturas, peo se veian mal.
  14. 1 point
    Pues hola de nuevo y gracias por la atención.
  15. 1 point
    Buenos días a todos. En realidad a lo que @dfalagian se refiere es a la hora de cargar los archivos comprimidos desde el navegador. Me explico: Cuando se exporta el proyecto con la opción 'Development Build', y los archivos generados son ".wasm", ".loader.js", ".framework.js" y ".data" ; éstos (sin ningún tipo de compresión) los subimos a nuestro servidor y funciona perfectamente todo, sin ningún problema. (Evidentemente, en el propio servidor local generado por Unity funciona también) Sin embargo, cuando lo exportamos en modo 'Release' y se generan los mismos archivos pero algunos con terminaciones '.gz'; es decir: ".wasm.gz", ".framework.js.gz" y ".data.gz"; es cuando aparecen las siguientes advertencias/errores que impiden su ejecución: * Warning: El script de “Web.framework.js.gz” fue cargado a pesar de que su tipo MIME (“application/x-gzip”) no es un tipo MIME válido de JavaScript. * Error: Uncaught SyntaxError: illegal character * Error: Uncaught ReferenceError: unityFramework is not defined * Error: Uncaught TypeError: Cannot read property '1' of null at Web.loader.js:1 at createUnityInstance (Web.loader.js:1) at HTMLScriptElement.script.onload ((index):56) Como se puede comprobar el error viene de utilizar la compresión ".gz", se ve que el servidor envía el archivo pero el navegador no lo reconoce o no sabe qué hacer con él. (Cuando se exports y es unity el que genera el servidor en el localhost, entonces SÍ que funciona) Se ha intentado de diversas maneras cambiar la configuración del servidor (Apache en este caso) siguiendo algunas de las soluciones propuestas por unity en la utilización del Webgl: https://docs.unity3d.com/Manual/webgl-deploying.html https://docs.unity3d.com/2020.1/Documentation/Manual/webgl-deploying.html pero ninguna de ellas ha resultado ser satisfactoria. La cuestión sería entonces saber si conocéis alguna otra solución o configuración que requiera el servidor para que funcione todo correctamente. En nuestro caso, dado que se trata de archivos algo pesados lo ideal sería contar con algún tipo de compresión. Muchas gracias de antemano! Saludos. PD: lo mismo sucede si en lugar de utilizar ".gz" se utiliza "brotli".
  16. 1 point
    Hola, eso pasa porque al exportar, tu "screen" es distinta a la que te puede ofrecer el editor (game view). Seguramente eso se deba a que: no estás definiendo correctamente la posición/anclaje de tus elementos UI (botón, panel, etc) con respecto al canvas. No es lo mismo colocar un elemento en la parte superior derecha con anclaje a la esquina más próxima (superior derecha) que con anclaje en el centro de la pantalla (por defecto). Si el canvas sufre modificaciones el rect transform se re-calculará en base a este punto de anclaje. El modo de renderizado del canvas no sea el indicado, por ejemplo podés elegir si querés un canvas con elementos de tamaño fijo (ej: si un botón es de 12x12 será siempre así, sin importar si la pantalla es gigante o diminuta) o podés escalar los elementos en base a las dimensiones de pantalla (los elementos se agrandan/achican dependiendo de las dimensiones de la pantalla). Te recomiendo leer esto: https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/UIBasicLayout.html Ah y me olvidaba, siempre jugá con el tamaño del mismo Game View (usando otras resoluciones o manualmente con el puntero) para ver si tu UI responde bien. Saludos.
  17. 1 point
    Lo conseguí creando un UI/Default material y asignadolo al UI Image. Entonces añadí este código. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class prueba_offset_ui : MonoBehaviour { public float offset; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { offset += 0.005f; GetComponent<Image>().material.SetTextureOffset("_MainTex", new Vector2(offset,0)); } } Por cierto, mucho cuidado en añadir este código y NO asignar un material, por que por defecto cogerá el material ui default que llevan TODOS los UI element y os cambiará el offset de TODO el canvas, además los cambios se quedan guardados.(me ha pasado)💀 Si por acaso os pasa, yo lo solucioné dejando la pestaña de material del UI en cuestión vacío y añadiendo el código PERO poniendo el offset siempre a 0, una vez me cambió el offset de mis UI element, procedí a añadir un material personalizado para que solo los elementos que lleven este material sean sucestibles de modificación. Un saludo!
  18. 1 point
    Recuerdo un post de la antigua administración que hablaba de cuentas de usuarios borradas por inactividad, puede ser eso.
  19. 1 point
    Está usando "Convex Collider", generado por un script, y retroalimentado por el mesh collider. Básicamente es como estar modelando un polígono el cual no tiene un mesh para representar su forma visualmente, y usa sus edges para enviar la información a el mesh collider. Si no tienes el script no podrás hacerlo, si lo tienes, de seguro tienes que activar el modo edición con alguna tecla o opción el mismo script.
  20. 1 point
    Te falta agregar texturas. Para 'pintar' un terreno, necesitas agregar las texturas a tu 'paleta de colores', Unity no trae ninguna por defecto, te recomiendo revisar tutoriales sobre 'Terrain Paint texture'. Un enlace hacia la documentación: https://docs.unity3d.com/Manual/terrain-PaintTexture.html
  21. 1 point
    Lo resolví gracias a TextMesh Pro y su sistema inline. Lo que me ocurre ahora es lo siguiente: <sprite index="0"> Esto me carga el primer sprite del atlas del sprite asset de textmesh pro. Pero si pongo <sprite= "nombre_del_atlas" index="0"> Debería(según los tutoriales que he seguido) cargarme la imagen 0 del atlas específico, pero no hace absolutamente nada. Y lo he puesto igual que en el tutorial. Vale, era al parecer un problema de rutas. Los sprites assets deben estar en la carpeta de resources de textmeshpro.
  22. 1 point
    Saludos. Mi ultima modificación es adaptar el sistema de misiones ha escenarios externos. Un escenario externo es independiente del juego y lo puede crear cualquier persona vinculandolo a un planeta, base o nave. Todavía es experimental, me hace falta añadir mas funciones y probar mas escenarios, pero la base del sistema ya funciona bastante bien. También he arreglado algunos fallos que he visto en videos anteriores, debido que al cambiar de version se me modificaron todos los objetos, seguramente todavia habra algun objeto perdido mal colocado, pero los arreglare según los vea, poquito a poco.
  23. 1 point
    Los nodos a los que te refieres lo que hacen es emular a las acciones, variables y métodos del lenguaje de programación en cuestión. Para poder ejecutar algo una sola vez, una de las cosas que puedes hacer es como dice francoe1, establecer una variable "bool" que se ponga en "true" o "false" cuando se produzca la entrada en el trigger, y que debido al cambio de valor, ya no se pueda ejecutar con una condición. Te recomiendo que "escapes" del método de programación a base de nodos si quieres aprender a programar, por que así podrás tomar el control absoluto de lo que quieras hacer. Un saludo!
  24. 1 point
    Fuerza de acero o "SS" es un proyecto FPS que lleva tiempo hace tiempo, junto con mi pequeño equipo, para la plataforma Android, y en los días, el placer de subir nuestro primer tráiler de presentación a Youtube, nos encantaría que pases a Ver dicho trailer y dejarnos. gracias :) Aquí el enlace del video:
  25. 1 point
    El lema de esta Comunidad es no hacerle el trabajo a nadie, nunca. Las otras Comunidades que hagan lo que quieran, pero en UnitySpain intentamos que los usuarios tomen por costumbre resolver sus dudas en común, sí, pero luego se encarguen ellos mismos de resolver sus problemas.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...