Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 58,34€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales

Leaderboard


Popular Content

Showing most liked content since 09/19/2018 in all areas

  1. 6 likes
    EDITO: La pagina de steam ya esta activa, Delta Squad en Steam con su correspondiente trailer y demas :) Ya puedes comprarlo!! Hola!!!, Llego el momento de presentar el proyecto en el que llevo varios meses currando. Se llama Delta Squad, y al igual que mi anterior trabajo FullBlast esta pensado para old gamers y gente que gusta de arcades clasicos con gameplay clasico 100%. Aqui no hay ayudas a los jugadores, ni "complicado" lore, al mas puro estilo john carmack, donde decia aquello de que la historia en un juego tal y cual... xD Delta Squad es un arcade donde tenemos que liberar a la humanidad de un maligno virus y para ello iremos cumpliendo misiones en cada nivel hasta conseguir nuestro objetivo. Se puede jugar hasta 4 personas local coop, y trae un modo para activar el "friendly fire" que es siempre tan agradecido en estos juegos (porque matar a tus compañeros siempre se agradece xD). Aqui os dejo la primera captura del proyecto :) Delta Squad es un juego muy particular y que solo gustara a un porcentaje MUY pequeño de la gente. El juego va enfocado a la gente que busca un juego retro como los arcades de los 90', si no te encuentras en ese target, entonces el juego NO tiene nada que ofrecerte y no te recomiendo comprarlo porque te aburrira mucho. Si por el contrario te gusta comprar juegos asi "raros" como me pasa a mi, entonces seguramente este Delta pueda estar entre tus retro-favoritos. Para gustos colores... Edit: Aqui tenemos el primer video en movimiento del juego :) Gameplay video
  2. 6 likes
    Hola, ahora que he empezado el proceso de subir un segundo juego a la playstore le he encontrado utilidad a los post que escribí al subir el primero, ya que me están facilitando mucho el trabajo. Os dejo los enlaces con una pequeña explicación y espero que puedan ser de ayuda a todos aquellos que hacen sus primeras subidas a la tienda de Google. Como subir un juego a la playstore. Aparte de describir el proceso, se indica lo que tendríamos que tener preparado previamente, como los iconos, o una descripción corta y una larga, pantallas, un vídeo… Como firmar un apk de unity para subirlo a la play store. Lo más importante: NO PERDÁIS NUNCA DE LOS JAMASES LA FIRMA. Incorporando Google logros con Google Play Services. Aparte de publicar el juego creo que es una buena idea aprovechar las diversas posibilidades que nos ofrece Google, los logros es una de ellas, y pueden ayudar a motivar al jugador. Como crear un tablero de puntos para Unity con Google Leaderboard. Otro de los servicios que nos ofrece Google y podemos aprovechar: el tablero de puntos! Són post muy simples, donde se explica el proceso más sencillo. Por ejemplo en el de subida no pasamos por Alpha y Beta, ni creamos un grupo de usuarios Betas. Espero que sirvan a todos aquellos que suben su primer juego! Suerte… y a por los Euruuuuuuus!!!
  3. 5 likes
    Buenas, si alguien lo recuerda, este juego lo empece hace mucho, lo deje abandonado y no pude resucitarlo al tratarse de versiones tan antiguas de Unity. Actualmente estoy haciendo un reboot, de momento y a modo de demo técnica, os muestro este pequeño video de ejemplo:
  4. 4 likes
    https://connect.unity.com/p/spriteanimator-2d-tool Completo sistema para trabajar con Sprite Sheets Visitar en Assets Store https://assetstore.unity.com/packages/tools/sprite-management/spriteanimator-153405
  5. 4 likes
    Creo que todos los niños de mi época han visto la película Twister al menos una vez. Claro que no era perfecta pero dió a conocer por el mundo a los cazadores de tormentas. A mi me encantó... Me llamo Manuel, vivo en Madrid y desde ese momento me empecé a interesar por los tornados. Hace unos tres años, iba por Castilla La Mancha con el coche en pleno verano y vi unos cuantos remolinos de polvo (dust devil en inglés) debido a la tierra caliente y pensé.... "con lo que molan los tornados, qué raro que no haya ningún videojuego sobre ellos". Acababa de publicar mi primer juego en Steam (City Z) y decidí empezar a probar tornados en Unity 3D para ver si había algún potencial. Tan sólo encontré una demo visual que me gustó y empecé a modificarla añadiendo física y mejores efectos. En ese momento me pareció bastante impresionante y decidí crear el primer videojuego (que yo sepa) sobre cazadores de tormentas. Desde entonces, el juego ha evolucionado muchísimo cómo habéis podido ver en el vídeo y creo que ya ha llegado a la calidad suficiente para poder ser lanzado en acceso anticipado en Steam. Queda mucho por mejorar o añadir pero el núcleo del juego ya parece bastante divertido. Características del juego: Modos de juego - Misiones en solitario para aprender las bases del juego - Multijugador online 1 vs 1, 2 vs 2 or 4 vs 4 para jugar contra otros cazadores de tormentas - Tipos de juego variados: Fotografía, Brote de tornados, Controla el tornado... etc. Entorno - Física realista de los tornados con fuertes vientos y destrucción de objetos cercanos - Mapa grande y detallado inspirado en los paisajes de la Tornado Alley - Condiciones climáticas cambiantes y distintas horas del día Gameplay - Algoritmo complejo para evaluar la calidad de las fotos: distancia, focus, escombros visibles... etc. - Distintos coches equipados con radares meteorológicos para medir la actividad de las tormentas - Pods de monitorización para medir la velocidad del viento y su dirección en el suelo Otros - Galería de imagen para gestionar tus fotos y compartirlas en Steam - Emisoras de radio FM modificables para que escuches tu radio favorita en el coche - Posibilidades de ver vacas volando Poco más, éste es el enlace del juego en Steam: Ficha del juego en Steam El lanzamiento en acceso anticipado está previsto para principios de junio y ando retocando cosillas y arreglando errores. Pues nada, aquí me despido, muchas gracias por vuestro interés y no dudéis en comentar dudas o sugerencias. Os dejo con una captura de pantalla que he tomado ayer para que veáis los últimos avances en cuanto a representación de las superceldas:
  6. 4 likes
    Si simplemente vas a activar y desactivar un gameObject puede hacer lo siguiente. [SerializeField] private Transform m_torchObject = null; public bool TorcAble = true; private void Update() { if (Input.GetKeyDown(KeyCode.F) && TorchAble) { m_torchObject.gameObject.SetActive(!m_torchObject.gameObject.activeInHierarchy); } } Lo que está haciendo este código es tomar el valor actual de Active Hierarchy del GameObject (m_torchObject) y lo asigna con el valor booleano negativo al actual. Cuando comparas variables booleanas deberias de hacerlo de la siguiente manera. private bool MyBool = false; private void Update(){ //Comprobar si es verdadero if(MyBool){} //Comprobar si es falso if(!MyBool){} } Por esta razón si tienes un valor true y le agregas este signo al inicio (!) obtendrás el valor opuesto. Saludos.. el hombre de LAS scripts...
  7. 4 likes
    Hola, Os dejo una lista de youtube que he dedicado al Particle System. En ella voy poniendo los Videos de cómo he creado efectos que he ido necesitando en mis chorrijuegos. Entre ellos hay: fuegos artificiales, una explosión plana 2d, implosiones, un fondo estrellado y un muro eléctrico… La lista es también un ejemplo de lo hortera que puede llegar a ser un programador cuando se pone a hacer efectos. Os dejo también dos canales de youtube que tienen un apartado de particle system muy interesante! La verdad es que de tanto miro algún video de estos canales para encontrar “inspiración”. Mirza: https://www.youtube.com/channel/UC5c5JgFyiFXKXCVRh2DsRJgç Gabriel Aguilar: https://www.youtube.com/channel/UCtb1s859RTxx-RIgFs5ZVQA
  8. 4 likes
    Quisiera ver como ese hermoso sockets stream tcp soporta los 5000 clientes ... Analicemos .. un MMO necesita sincronizar inputs, posición y estados del chunk donde el jugador se encuentre, pensemos que el jugador se encuentra en una zona donde hay 300 jugadores que deberían ser sincronizados, cada paquete de sincronización pesa en el mejor de los casos 200bytes, supongamos que el server se actualiza a 30FPS por lo que por cada cliente recibiría en 1 segundo 200 * 30 igual a 6Kbs aproximadamente, ahora supongamos que el socket del servidor recibe estos datos de los 5000 clientes conectados al server, estaría recibiendo 30MB por segundo, el socket que ejecuta el servidor está en modo STREAM por que irá leyendo bytes a bytes los 30MB que están en el buffer TCP - el mejor de los casos este proceso tarda 5 segundos, agregamos que el parseo de los paquetes y el análisis interno de los datos agregue unos 10 segundos más a la ecuación, tendríamos un retraso entre TICK y TICK del proceso de 15 segundos.... No hace falta comentar que pasaría si intentas enviar los datos de 300 clientes a cada cliente este seria como 30MB * 5000 Clientes por lo que el servidor tendría que tener una velocidad de subida de 150.000Mbits lo cual veo poco probable. No intentó desanimar, pero no esta bueno que intentes engañar a la gente, el desarrollo de un servidor para juegos tiene muchisimas complicaciones, por lo que lo lógico sería empezar por explicar los conceptos básicos. un IPEndPoint no representa una conexión, este es un objeto que contiene la información de una conexión. Jamás bajo ningún concepto se debería utiliza un socket stream para enviar datos como posición ya que este crearía un cuello de botella insostenible, los Sockets TCP envian Byte a Byte y analizan que cada uno llegue, por lo que por cada bytes tenes 3 ACK esto aumenta el tamaño de cada paquete en un 300% siempre y cuando el byte enviado llegue, si el mismo no llega entonces se repetirá el proceso bytes-> <-ACK -> ACK <-ACK ... Este análisis solo se trata del consumo a nivel de red, pero a nivel programación estas creando un AsyncCallback por cada conexión y supongo igual por cada cliente utilizaras un AsyncCallback para la recepción de paquetes. ¿Cómo controlas de esta manera la frecuencia de actualización del servidor, es decir, el servidor se ejecutaría en tiempos dominados por la recepción de paquetes? ¿Cuantas veces pasaria el GC al crear tantos AsyncCallbacks? Desde mi punto de vista estas en los inicios de un mundo que tiene mucho que explorar, esta bueno que intentes compartir tus conocimientos pero intenta ser realista, este tipo de servidores podría servidor para un ajedrez donde uno de los clientes es servidor y el otro se conecta. ¿Pero para un MMO de 5000 CCU? ni siquiera aguanta las conexiones de manera estable -
  9. 3 likes
    Buenas gente! Bucando información sobre como importar eficientemente audio para android he encontrado este articulo que seguro que os sirve de utilidad, a mi me ha servido para despejar muchas dudas: https://blog.theknightsofunity.com/wrong-import-settings-killing-unity-game-part-2/ Saludos
  10. 3 likes
    Es un pequeño juego 2D creado para la JAM de UnitySpain. Tienes que guiar al personaje por el bosque hasta que llegue a casa. El juego es tranquilo, se trata de ir encontrando los diferentes caminos y esquivar los peligros que se encuentra como los lobos o las lanzas. Creo que le dedique mas o menos unas 16 horas, y estoy contento con el resultado, tanto que me quedo con el proyecto para irlo evolucionando poco a poco, ya ire compartiendo los cambios y los "improvements". Cualquier idea, o crítica, que querais aportar sera muy bienvenida. Por ahora esta disponible en itch.io: https://uadla.itch.io/way-home
  11. 3 likes
    Hola soy James Roman, tengo ya varios años trabajando con Unity, y actualmente trabajo en una compañía como desarrollador de experiencias en Realidad Virtual. Y tengo ya bastante tiempo trabajando en VRLAB. Puedes verlo desde aqui. ¿Que es VRLAB? Es básicamente una colección de componentes para interacciones en VR usando Oculus, me he enfocado bastante en las armas ya que creo que es una de las cosas mas divertidas de probar en la Realidad Virtual, he incluido diferentes tipos de armas, escopetas, armas automáticas, revolver, arco y flecha, espadas. También diferentes tipos de recarga para estas armas, puedes cambiar manualmente el cargador a cada arma cuando este se agote, recargar usando diferentes tipos de gestos como en dead and buried, puedes recargar el revolver haciendo un giro rápido con la mano. - Armas - Como ya he mencionado he trabajado bastante el tema de las armas con un completo sistema de armas, varias armas ya incluidas (Escopetas, revolver, Automáticas), puedes tomar las armas existentes como base para crear las tuyas, o crear nuevas armas desde 0. - Completo Sistema de Interacción - También posee un completo sistema de interacción, muy extensible, puedes tomar objetos, interactuar con objetos, mover palancas, botones etc, crear animaciones de interacción diferentes para cada objeto, y diferentes comportamientos incluso para cada mano. - Arco y Flecha - Posee un arco realista con el cual puedes lanzar flechas, puedes tomar una flecha de tu espalda o simplemente tomar una que ya hayas lanzado, estas se pegan a los demás objetos de una manera bastante realista. - Diferentes Modos de Recarga - Posee diferentes formas para poder recargar las armas, puedes cambiar el cargador una vez que este se haya acabado, o simplemente realizar gestos con la mano como en dead and buried para recargar tus armas o simplemente tener munición infinita. - Sistema de Combate Cuerpo - En VRLAB puedes tomar un par de espadas y luchar contra los enemigos, los cuales responderán correctamente a las físicas, ademas de eso puedes golpear a los enemigos con tus armas, como con el arco o una escopeta si no tienes munición. - Botones y Palancas - Botones y palancas que responden correctamente a las físicas, desde las distancia puedes activar una palanca con un disparo o simplemente lanzando un objeto. - AI - Aunque el fuerte de este asset no esta en la AI, he añadido unos ejemplos bastantes interesantes y extensibles para trabajar con estos mismos. - Character Controller y Teleport - Tienes diferentes formas de moverte en VRLAB, la mas común quizás moviéndote alrededor con el joystick o usando un sistema de teleport muy parecido al de roborecall. Todo esto en prefabs bien organizados listos para tomar y soltar en la escena, con montones de posibilidades de modificación mediante el inspector, de igual manera me he esforzado para crear un código legible y placentero a la vista, así que si quieres simplemente entrar y mirar como esta hecho todo, y aplicar tus propias modificaciones mediante código, no debería ser muy difícil para alguien que tenga ya su experiencia con Unity. - Futuras Actualizaciones - - Añadir nuevas armas, entre ellas un lanzacohetes. - Sistema de inventario, para que puedas cargar varios objetos a la vez. - También cabe destacar que me gusta roborecall, y quizás añada algunas de sus funciones, entre ellas la posibilidad de tomar balas en el aire y devolverlas a los enemigos. - Luego simplemente escucharlos a ustedes y seguir mejorando. Dejo nuevamente el link al assetstore aqui, si lo pruebas no dudes en dejar un review para seguir mejorando, y si quieres contactar conmigo directamente puedes escribirme a james@unity3dninja.com finalmente los dejo con algunos vídeos cortos mostrando distintas funcionalidades.
  12. 3 likes
    Acá les dejo un excelente tutorial ( en tres partes ) a modo de introducción al nuevo Input system. Uno de los mejores que vi, los demás videos parecen copy+paste, además de que todos ponen las expresiones lambda sin ni siquiera saber que hacen (o por lo menos da esa sensación). Parte 1: introducción y Setup Basicamente de Input.GetKeyDown(KeyCode.w) a keycoard.wKey.isPressed Parte 2: Binding y Composite Acá explica como se pueden especificar bindings (conexiones entre acciones y dispositivos físicos) visibles en el inspector. Un "Composite" es lo mismo pero para con más de un binding. Parte 3: Input System Asset Se migra todo lo expuesto en la clase a un Asset propio del nuevo sistema, con la ventaja de setear varios ActionMaps (por ej uno para un menu, otro para gameplay, etc) con sus acciones y sus bindings.
  13. 3 likes
    @Rootet en tu script hay cositas que están bien otras que están mal, por ej: 1) Update para inputs, FixedUpdate para físicas: if (Input.GetMouseButtonDown(1)){ if (corriendo){ } else{ rigi.velocity = new Vector2(velocidad * 1.25f, rigi.velocity.y); } } En update, estás modificando una velocidad, cosa que debés hacer en FixedUpdate, esto se lee como "Si apreto el botón derecho y corriendo es false la velocidad X es el 25% más grande" y esta actualización sucede en un solo cuadro, no cuadro a cuadro. Además si la velocidad es un 25% más grande se supone que corriendo ahora debe ser true pero no, se setea true si apretás el otro botón (en FixedUpdate). ───────────────────────────────────────────────────────────────────────────────────────────────────── 2) Quién es responsable de corriendo? if (Input.GetMouseButtonDown(0)){ if(corriendo){ if ((enSuelo || !dobleSalto)){ sonido.Play(); //Empujón hacia arriba //Opción 1. Metodo up de Vector2 rigi.AddForce(Vector2.up*fuerzaSalto); //Otra opción //Aplicamos una fuerza de 0 en X y de fuerzasalto en Y //rigi.AddForce(new Vector2(0,fuerzaSalto)); if(!dobleSalto && !enSuelo){ dobleSalto=true; } } } else{ corriendo=true; NotificationCenter.DefaultCenter().PostNotification(this, "PersonajeEmpiezaACorrer"); } } Cuando apretás el botón izq y no está corriendo se da la primer vuelta (el else), es decir que se pone corriendo = true. En el siguiente cuadro GetMouseButtonDown no se dispara (por razones obvias) entoces el "if(corriendo)" no se da. Sí se va a dar el "if(corriendo)" en el proximo click. Además, ¿quién pone corriendo en false? Y volviendo al punto 1, solo si corriendo es falso la velocidad aumenta. Una vez que diste click izquierdo corriendo nunca vuelve a false (?). Puede ser que me haya olvidado de algo, muchas veces contesto a la ligera. ───────────────────────────────────────────────────────────────────────────────────────────────────── █████████████████████████████████████████████████████████████████████████████████████████████████████ Podés resolver el problema parcheando if's y demás, pero te diría que de entrada la estructura es muy confusa para una tarea tan simple, tomalo como una oportundad de mejora y experimentá con una nueva, que tenga más lógica y sobretodo que alguien externo al código lo vea y lo entienda al instante, pensá que esto es un salto y una funcionalidad de correr, practicamente no es nada. La lógica que te recomiendo para una mezcla Update + FixedUpdate en un platformer (y con cualquier personaje) es la siguiente (seguramente hay cosas que no definí, solo una idea muy por arriba): // inputs - esto expandilo a todas las inputs que estás esperando, lo mismo con ejes // En este ejemplo está solo correr "Run" (que elegí la leftShift) bool runPressed = false; bool runReleased = false; bool running = false; bool isGrounded = false; void Update() { // Update puede pasar 100 veces más rápido que FixedUpdate (50 fps por default), así que // todos los KeyDown se acumulan, no se setean, así no perdés ninguno en el camino // por acumular me refiero a usar una simple OR runPressed |= Input.GetKeyDown( KeyCode.LeftShift ); runReleased |= Input.GetKeyUp ( KeyCode.LeftShift ); } void FixedUpdate() { //Detectar suelo, determinar direcciones de movimiento, ángulos, etc // Por supuesto acá es donde decís "suelo = true o false" isGrounded = IsGrounded(); // el vector objetivo cuadro a cuadro, no necesariamente el aplicado Vector2 targetVelocity = Vector2.Zero; // bien general un "if( suelo ) .... if( isGrounded ) { //Todo lo que pasa si y solo si el jugador está grounded // en este caso la input a evaluar es run así que if( runPressed ) { running = true; targetVelocity.x = ... } else if( runReleased ) { running = false; targetVelocity.x = ... } } else //Todo lo que pasa si y solo si el jugador NO está grounded { //en el aire no puede correr running = false; targetVelocity.y = ... } //Una vez determinado el estado se aplica el vector obtenido a la velocidad (de la forma que quieras). rb.velocity = ...(dependiendo de targetVelocity) // IMPORTANTE --> Resetear inputs, FixedUpdate ya las usó runPressed = false; runReleased = false; } Animación y movimiento poco tienen que ver, si no ves los efectos en pantalla tratá de exagerar los valores, en vez de 1.25f poné 5f. Igualmente creo que sí, desde el animator podés setear la velocidad del clip (revisá las referencias de Animator o google más rápido), aunque no recuerdo, estoy completamente seguro que para el sistema Legacy (viejo) se puede hacer, pero con el componente Animation. Saludos
  14. 3 likes
    Efectivamente, ahora mismo eso no es posible con clases C# serializadas, pero la buena noticia es que a partir de Unity 2019.3 lo va a ser gracias a un nuevo atributo llamado SerializeReference. Esto es algo que los que desarrollamos herramientas llevábamos AÑOS esperando que Unity implementase, así que hay cierta expectación con el tema. Más información aquí: https://forum.unity.com/threads/serializereference-attribute.678868/
  15. 3 likes
    Requiem for Erich Sann Actualizamos post con información de todo lo nuevo de Requiem for Erich Sann. Enlace Play Store: Enlace Apple Store: Juego en primera persona, realizado con Unity 3D. El objetivo del juego consiste en salir vivo de la casa con el preciado instrumento que obsesiona al protagonista. Os dejo un video introductorio y se agradece cualquier tipo de review, crítica, opinión... https://www.microsoft.com/en-us/p/requiem-for-erich-sann/9p8lwl0lwcdf El juego es totalmente gratuito y está disponible de momento en la Microsoft Store para X64, X86 y ARM Espero que os guste.
  16. 3 likes
    Os presento mi 2º (segundo) juego: "area51invasion" Link al juego: https://play.google.com/store/apps/developer?id=Raven+Games+Spain Consiste en aplastar a los invasores para que no roben a los aliens del área 51. Partidas de 15 segundos. La gente no saca más de 30-40 puntos. ¿Cuál es vuestro récord? Extras Hecho desde cero en 9 horas. 8 horas fueron en el apartado gráfico.
  17. 3 likes
    Buenas tardes, os presento mi ultimo videojuego online creado con Unity3d. Se trata de un juego de carreras de coches de Scalextric, el juego puede parecer bastante sencillo pero tiene algunos detalles que lo hacen un poco más complejo. En el juego puedes elegir 10 coches y 10 compuestos diferentes de neumaticos, cada uno con sus características , ventajas y desventajas. Esto hace que haya más variedad en el juego y no sea tan lineal. Por otra parte el juego funciona online con un servidor capaz de albergar partidas de hasta 32 jugadores. Trata de hacer los mejores tiempos con tu coche y ten cuidado de no salirte de la carretera ya que perderás el tiempo de la vuelta actual, el juego cuenta con una clasificación mundial TOP 20, se actualiza instantaneamente segun van participando los jugadores. Los controles del juego son: Flecha arriba del teclado: Acelerar o decelerar Barra espaciadora: Cambio de carril TAB: Ver clasificación mundial Sin más preambulos os dejo unas imagenes y el link de descarga, intentaré tener abierto estos días el servidor 24 horas, por si quereis pasaros a probar. Nueva versión: Descarga Android: https://play.google.com/store/apps/details?id=com.Raulandia.KLetrixMotorsport Descarga PC: https://www.dropbox.com/s/epc8yzv41oczfq1/ScalextricPros2k19.rar?dl=0
  18. 3 likes
    ¡Buenas! Me estoy planteando dar una pequeña charla introductoria sobre narrativa procedimental y generación de tramas argumentales en videojuegos, y me preguntaba si existe un interés general por ello. la charla entraría sobretodo en el ámbito de aplicaciones de la IA en el desarrollo de videojuegos y sería un poco hablar de como se encuentra el estado actual y cuales son las soluciones y algoritmos más utilizados para ello. Muchas gracias y espero vuestro feedback!!
  19. 3 likes
    Buenas! Soy Rodrigo, como ya dije en el post de presentación tengo un canal de YouTube y subo videos de forma gratuita y sin publicidad. Hoy subí un nuevo vídeo, el último de la serie sobre el sistema de eventos en Unity. El mismo tiene la capacidad de enviar eventos a cualquier GameObject (incluso si se instancia en modo dinámico), pasar múltiples parámetros y castearlos con la ayuda de Generics y ahora finalmente enviar eventos a objetos específicos. Si les interesa les dejo el enlace: Saludos!
  20. 3 likes
    Esta API tiene una lista extensa de métodos para extender la funcionalidad de las clases de .NET Framework, WinForms, System.Console y Unity3D. Además, contiene implementaciones propias y de terceros. Lista de contenidos interesantes por espacios de nombres uzLib.Lite.Core Contiene una implementación de Singleton. Contiene un wrapper de consola para leer líneas o teclas al mismo tiempo. (clase ConsoleOutput, método: ReadLineOrKey) Dentro del namespace "Input" podemos encontrar alguna clase que contiene una implementación (clase SmartPsswrd) para leer contraseñas por pantalla sin mostrarlas (como se esperaría de un entorno Linux). uzLib.Lite.Extensions Contiene algunas extensiones para arrays y colecciones (añadir elementos a un array, comprobar si un Dictionary/List/HashSet/IEnumerable es nulo o está vacío (IsNullOrEmpty), exntesiones ForEach para ejecutar Action callbacks (incluídas con índice ("int index")) (más metodos en la API de pago), borrar en el índice, DisctintBy…) Contiene algunos métodos de extensiones de "Dictionary": FindIndex (busca el índice por predicado) GetIndex (obtiene el índice de un item existente, si no, devuelve -1) AddOrSet (añade un valor si la clave no existe, si existe entonces actualiza el valor) AddOrAppend (lo mismo que antes, pero para las clases List<T> y T[] como TValue) AddAndGet (si la clave no existe añadela con el valor specificado, después devuélvelo) Get (lo mismo que antes, pero fuerza los tipos genéricos con constraints del tipo: where TValue : class, new(), para que siempre sean clases lo que se pase como tipo genérico) SafeGet (intenta obtener el valor si la clave existe, si no devuelve el valor por defecto (default(TValue))) Contiene algunas extensiones para la clase Bitmap: obtiene un IEnumerable de Colores ("Color") de una clase Bitmap o lo guarda (Save) en una ruta (o en un Stream (TODO)). Contiene una extensión para el tipo primitivo byte: el método RoundOff (para obtener un "byte" redondeado)… Contiene algunas extensiones para la clase Color: obtener el umbral entre dos colores, comparar un color1 para obtener un color similar a partir de un IEnumerable de colores (2), convolución de posterización, obtener porcentaje de similaridad, redondear colores… Contiene un método de extensión para compilar archivos *.sln… Contiene extensiones de compresión: zip/unzip archivos a partir de su ruta (path), Streams u objetos (sync/async)… Contiene una extensión CodeDOM para añadir literales "static" a nuevas clases generadas a través de la clase CodeTypeDeclaration. Contiene una extensión DateTime para obtener su timestamp de UNIX (usa la clase DateTime no la clase DateTimeOffset). Contiene una extensión para la clase Exception para comprobar si un el índice del objeto de tipo array/List/Dictionary está fuera del límite. Contiene extensiones para Git para obtener algunos datos usando la librería LibGit2Sharp. Contiene exntesiones para HTML para limpiar y buscar ocurrencias en códigos fuentes HTML. Contiene extensiones IO para verificar rutas válidas, obtener nombres de archivos a partir de URLs, obtener y verificar patrones de rutas relativas, verificar si la ruta es un directorio, obtener directorios de nivel superior, subir el árbol de rutas (N veces), obtener directorios temporales, verificar si los directorios están vacíos o son nulos, eliminar el contenido de una carpeta… Contiene exntesiones para Internet (System.Net) para descargar archivos y hacer (GET) peticiones… Contiene una extensión para la clase Object para comprobar si un objeto es convertible (cast)… Contiene una extensión para la clase Process para lanzar procesos asíncronamente… Contiene extensiones para el namespace Reflection para invocar métodos estáticos/no-estáticos, verificar si existe un método en la "Assembly" especificada, ejecutar un método comprobando las excepciones… Contiene extensiones de serialización para serializar/deserializar archivos/Streams/objetos/arrays de bytes y para comprobar cadenas de JSON/XML válidas, etc… Contiene extensiones para la clase String para verificar si la cadena es nula o está vacía (no se necesitaría usar más: ...string.IsNullOrEmpty("example")...), formatear cadenas (la misma lógica), para cambiar el primer carácter de una cadena a mayúscula… Contiene una extensión para URIs para comprobar si la URL pasada por cadena es válida. Contiene una exntesión para Visual Studio para obtener el proyecto de Inicio desde un archivo de solución… uzLib.Lite.Plugins.SymLinker Contiene una implementación para crear enlaces simbólicos en Windows/Linux/Mac OSx… uzLib.Lite.Shells Contiene una implementación obsoleta llamada GitShell (una auto-implementación de la funcionalidad de Git antes de que descubriera LibGit2Sharp…) uzLib.Lite.Unity.Extensions Contiene extensiones para animaciones (clase "Animation"). Contiene extensiones para la clase Color: color naranja (Orange) (TODO: implementar más colores), para comprobar si los colores son similares, la distancia entre colores, obtener colores al azar, las mismas extensiones que la clase uzLib.Lite.Extensions.ColorHelper (pero adaptadas a Unity3D)… Contiene extensiones de geometría para obtener posiciones al azar (Vector3), obtener la media de Vector3s, obtener límites encapsulados (esto es un promedio de los límites de todos los renderizadores (Renderers) de un GameObject), obtener el tamaño ortográfico que se establece en una cámara para que este objeto se ajuste perfectamente a su vista, obtener la compensación de un modelo (obtener el máximo y los centros mínimos del Renderer de un GameObject), comparar los tipos Vector3/Vector2 para comprobar si son mayores o iguales, menores o iguales, menores/mayores que otro Vector3/Vector2, obtener objetos Vector3/Vector2 invertidos, obtener el rayo desde el centro de una cámara… Contiene extensiones matemáticas obtener el máximo absoluto de una matriz (array) de floats (params), obtener el múltiplo de un float, verificar si un float está entre un rango (operación exclusiva/inclusiva), establecer la componente “Y” de un vector, obtener la distancia entre dos Vector3/Vector2… Contiene extensiones para objetos (GameObject/Transforms) para establecer capas, etiquetas de forma recursiva, eliminar componentes de forma recursiva, buscar Transforms padres por su nombre, obtener el componente (Component) más arriba en la jerarquía, obtener los componentes por nombre, obtener o agregar componentes en un GameObject (o lanzar excepciones/LogErrors), crear hijos fácilmente, destrucción segura (verifique si el proyecto está ejecutandose bajo el Editor (Application.isEditor) de Unity ejecutando DesroyImmediate), obtener la ruta de GameObject (volcado de la jerarquía de los hijos de este), envíar un mensaje a los objetos (SendMessage) del tipo seleccionado… Contiene extensiones para la clase Rect para conseguir que la implementación de los PropertyDrawers sea más sencilla, para verificar si el rect está dentro de otro rect, agregar el relleno a un rect, hacerles "Clamp"… Contiene extensuiones para la clase Texture(2D) para escribir un texto en una textura, obtener su ancho/alto como un objeto de tipo Vector2, crear texturas a partir de colores (UnityEngine.Color)… Contiene extensiones para la interfaz (UI) donde están puestos algunos GUIStyles personalizados, obtener Rects centrados, dibujar Rects, dibujar ProgressBars, "Label"s centrados, dibujar Marquees… uzLib.Lite.Unity.Utils Contiene una clase llamada "GLDebug" para visualizar Gizmos dentro de la vista de juego (Game view). Screenshots https://imgur.com/a/dqWBKwN Instalación ¿Necesitas ayuda? Solo clona este repositorio en tu proyecto de Unity o en tu solución. Para la documentación, mira la Documentation API. Problemas ¿Tienes problemas? Reportalos en la sección de problemas. ¡Gracias por el feedback! Contribuir Haz un fork de este repositorio, realiza los cambios oportunos y luego crea una pull request (PR). Si encuentra errores o tiene ideas nuevas que no desea implementar, presente un informe de error. Enlaces de relevancia: Sitio del equipo Canal de YouTube Soporte (abre tus tickets aquí) Enlace a la Asset Store Enlace al repositorio Documentación del asset ¡Espero que disfrutéis el asset! ¡Un saludo! ~~ United Teamwork Association ~~
  21. 3 likes
    Hace poco he sufrido aquello a lo que los desarrolladores "Indie" (En mi caso mas Hobbista que Indie) tenemos tanto miedo: Google ha retirado mi juego de la playstore por incumplir alguna cosa relacionada con la política de privacidad. Resumiendo he conseguido salvar el escollo creando una política con Firebase: https://app-privacy-policy-generator.firebaseapp.com/ Y colgandola de la playstore y haciendola consultable desde el juego. Os dejo el post con el proceso completo: http://martra.uadla.com/politica-de-privacidad-con-unity-en-la-play-store/ Espero que si alguien tiene el mismo problema le sea útil la info. Saludos!
  22. 3 likes
    Puedes utilizar itween con el itween visual editor https://assetstore.unity.com/packages/tools/visual-scripting/itween-visual-editor-180
  23. 3 likes
    Como vais gente? Aquí os dejo el trailer de lanzamiento para PS4, se emite en un rato. Saludos!
  24. 3 likes
    Atentos, que doy una Master Class: La imagen de ejemplo que has puesto hace suponer que no está trabajando con la textura, sinó con los canales RGB del Vertex Color, que es una propiedad de la mesh (modelo 3D). Los programas tipo Blender/3dsmax/Maya/etc, traen herramientas para que puedas "pintar" o asignar colores a los vértices que componen los triángulos y polígonos de una malla(No, no tiene nada que ver con aplicar un material de un color sólido). Cuando pintas todos los vértices de un polígono concreto, es cómo si pintaras con un color un polígono de la malla. Básicamente lo que haría un shader de hierba de esos de mover las hojas con el viento sería leer cada uno de los vértices de la malla, y en función de "cuánto rojo o cuán alto es el valor de este color concreto", asociarlo a una magnitud de desplazar la posición de dicho vértice en X/Y/Z, siendo cada uno de estos tres ejes el correspondiente canal de color R/G/B. Cuando hablo de valor del color, me refiero a que en un modo de color de 8bit, tenemos 2^8 = 256 valores distintos para el R, G y B (256 tonos de rojo, verde, y azul)... Pintando ciertos vértices de más o menos rojo, esos vértices aparecerán movidos en X más o menos, dependiendo de su valor. Por cierto, hay programas que soportan incluso RGBA, un canal Alpha adicional para el Vertex Color. Generalmente este canal Alpha se usa más para filtrar el nivel de transparencia de los vértices al renderizarse. Sí, con texturas también se puede hacer este tipo de cosas, y de hecho la base del Normal Map para los relieves hace precisamente eso. El que se use Vertex Color en lugar de una textura es precisamente para ahorrarte cargar en memoria esa textura. Es más empaquetado, más optimizado, más rápido, etc. Pero también más limitado, ya que sólo podemos guardar información en los vértices de la malla. Es como si trabjarámos con una textura muy pequeña (por tanto, menos definición...). La versión "PRO" de estos truquitos que van mediante texturas hacen uso de una 2ª textura a modo de "máscara", que excluye a sólo una parte de la malla para que se mueva o distorsione.
  25. 3 likes
    Hola a todos, Soy nuevo en el foro, pero me gustaría mostrarles un proyecto personal en el que vengo trabajando hace 2 meses y estoy en los últimos retoques, no es un juego con fines de lucro, simplemente es para mi porfolio. Me gustaría saber su opinión El juego se llama Battle Machines: Logo Es una mezcla entre Twisted Metal y Mario kart, un juego únicamente multijugador local hasta para 4 jugadores. Por ahora solo tiene 2 modos de juego, batalla (todos contra todos o por equipos), y captura a la bandera. - Existen diferentes "Motores" que definen las características del auto, entre estas características esta el "Special" que es un arma única de cada motor, el "Special" se recarga con el tiempo, como una ulti del LOL o una herica de HOTS. Mi idea en un principio era hacer varios autos pero como el proyecto lo estoy haciendo solo yo, y modelarlos me llevaría mucho tiempo, decidí que lo que cambia es el "Motor" y no el auto. En el juego, debes recoger cajas para obtener un arma al azar, puedes juntar hasta un máximo de 3 más el Special, en total 4 armas, ademas puedes disparar una metralleta que tiene balas infinitas. Ademas existen esferas de energía, si juntas 10 tus próximas armas serán mas poderosas. Las "armas" son: Misil perseguidor Misil normal (un misil que viaja recto pero mas rápido) Bomba rebotadora (va rápidamente por el piso pero al chocar contra una pared rebota) Mina Turbo Campo de fuerza Tengo una versión para descargar, esta lejos de lo que me gustaría que fuera, pero así va por ahora: Link de descarga: https://icedcris.itch.io/battle-machines Acá les dejo algunas capturas de pantalla: https://ibb.co/L8cNgsj https://ibb.co/GP1xQ2p https://ibb.co/j4jm3vC https://ibb.co/VvGcnyL https://ibb.co/qdMxBG9 https://ibb.co/8rHXcJ3 https://ibb.co/7k0xZHw https://ibb.co/XtPfm2K https://ibb.co/BPYXDXM Cuéntenme que les parece.
  26. 3 likes
    EDITO: Cambio de screenshot y de vídeo. Descarga desde el Asset Store de Unity ¡Gratis! Esqueleto 3D con animaciones, compatible con Mecanim de Unity. Tanto el modelo como las animaciones y texturas están creadas en Blender. Incluye: - Modelo de esqueleto (6174 polys) - Modelos de hachas (456 polys x 2) - 2 texturas para el esqueleto (2048x2048 px) - 2 texturas para las hachas (512x512 px) Animaciones: - Caminar - Correr - 3 Idles - 3 Ataques diferentes - 2 Animaciones de daño - 2 Muertes - Salto Vídeo demo: Descarga (gratis): ► Versión Unity (Prefabs y compatible con Mecanim) ► Sólo FBX con las texturas (para usar en otro motor de juego)
  27. 3 likes
    Hola amigos Hoy les vengo a hablar de un pequeño proyecto realizado en unity y de la experiencia que he tenido en el camino, se trata de un juego clásico en el que el objetivo principal es ordenar los números del menor al mayor, me he tardado unos 6 meses en terminarlo ya que solo le invertía una o dos horas al día, y en ocasiones hacía pausas y tardaba más de una semana en retomarlo, cosa que es frustrante al querer volver a agarrar el hilo de lo que llevabas, pero bueno, al fin lo he terminado y publicado en la play store. Este es el enlace para quien quiera testearlo y darme su feedback, de verdad se lo agradeceria mucho. Chaos of Numbers Una de las cosas en las que más me he tardado, es el diseño, soy pésimo en ello, y aunque no estoy convencido 100% con el producto final, tenía que lanzarlo pues para ser un pequeño proyecto ya llevaba mucho tiempo. Estas son un par de impresiones de pantalla del juego, espero y tengan la posibilidad de probarlo. Nota: El juego soporta los idiomas español e inglés
  28. 3 likes
    Hola muy buenas gente les quería mostrar mi primer juego de unity para android no es nada del otro mundo pero para mi fue un gran avance y me costo mucho durante el desarrollo fue todo una experiencia nueva para mi aprendí un montón de cosas sobre la marcha y la verdad que me gusto el resulta obviamente aun no esta terminado eso solo es un 50% de lo que me gustaría el juego pero ya vi que es jugable, espero que le guste y me den un apoyo positivo dándome opiniones de que mejorar si es mala idea un juego así. Si queréis descargarlo : https://play.google.com/store/apps/details?id=com.TG.VideoTube Gracias por leer =D
  29. 3 likes
    Hola, Aprovechando el trabajo en un nuevo juego, he creado un tutorial para crear un arma, con sus correspondientes disparos pra Unity. Es muy sencillo, el vídeo dura 20 minutos y contiene el proceso desde la importación de la imagen creada con Gimp hasta la creación de los scripts y las animaciones. Ni que decir que es aplicable a cualquier tipo de arma que quieras crear, el arte ya es cosa de cada uno. Quiza lo mas curioso es que se usa un evento dentro de la animación para disparar, y que tambien se usa un particle system que se modifica desde la animación. Espero que os guste, y que le sea útil a alguien.
  30. 3 likes
    ¡Hola! Esta semana he hecho un par de assets para un proyecto. Me grabé pintando uno de ellos, una espada low poly (260 tris). Podéis ver el proceso en este vídeo: El resultado final lo podéis ver aquí: En Sketchfab (Visor 3D): https://skfb.ly/6HQ8B Aunque no sea un tutorial propiamente dicho, espero que os ayude o inspire de alguna forma, sobretodo si os va el estilo de pintar a mano. ¡Saludos!
  31. 3 likes
    Hola, La creación de personajes es algo que los coders tenemos totalmente atravesada, y me he propuesto intentar cambiarlo, por lo que he escogido GIMP, y estoy creando el arte de un juego, o concepto, que quizá no salga a la luz, pero que me tiene que servir para mejorar en este campo. Os dejo un tutorial, donde se puede ver de una forma muy sencilla como hacer un personaje. El estilo del personaje no se donde enmarcarlo, no es pixel art, creo que no es cartoon, lo que si que esta claro es que es 2D. Se ha creado de tal forma que sea sencillo de importar hacia Unity. El vídeo es muy corto, unos nueve minutos, pero es que me he dado cuenta, que a mi no me gustan los vídeos largos, que no hace falta decir donde esta cada opción del menú. He supuesto que cuando digo: exportamos la imagen, no hace falta decir: vamos al menu file->export as, damos el nombre, pulsamos export, sale una ventana... que no, que no es un curso de todas las opciones de GIMP. Ya puestos he creado un vídeo de timelapse, que es incluso mas corto, pero que basicamente es el manual, recortado y sin voz, donde se muestra el proceso muy acelerado, de como cree el personaje. Seguramente el vienes que viene podré colgar el vídeo de como exportar a Unity y animar el personaje.
  32. 3 likes
    Primero un cuento corto: Me he decidido por al fin subir algunos assets al asset store (de los tantos que tenía, actualmente 3, Kinematic2D, GrabIt y LaserMachine) , pense "bueno esto es fácil, me registro, doy subir al asset store y probablemente dos días después me llegue un mail diciendome gracias por su tiempo Sr. Lightbug" bueno, no fué del todo así, pero después de medio mes de malabares, curso autodidacta intensivo de html+css (duración 1 día) y algunas luchas con Unity Connect acá estoy . ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ASSET STORE ----> Kinematic 2D DEMO ---> DemoWebGL DESCRIPCIÓN Kinematic2D es un controlador de personaje 2D Totalmente Kinematico (no basado en físicas) que te permite realizar el movimiento de tu personaje 2D mientras se encarga de manejar las colisiones correctamente. Basicamente ofrece las funcionalidades del Character Controller (Componente) que viene por defecto con Unity (y más), pero con tres grandes diferencias: Está preparado para movimiento bidimensional (de aquí el 2D) La forma del cuerpo del personaje es una caja (en vez de una capsula, esto es genial para platformers) Funciona con colliders 2D y 3D (Ej: colliders de sprites y 3D mesh) El principal objetivo de este asset es darte la posibilidad de que tú construyas encima un controllador de movimiento del personaje (Ej maquina de estados, habilidades, etc), sin preocuparte por la parte aburrida de las colisiones, así te puedes enfocar en el diseño y mecánicas de tus personajes ... lo divertido! .. para más info --> ir al link del AssetStore -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- PD: Después de haber creado (creo que por primera vez) un hilo en el foro oficial de Unity debo decir, que UnitySpain está años luz adelantado, en todo aspecto, volver aquí es como dejar de usar el intel pentium 2 para subirte a i7 realmente, (y ni hablemos del código) ... felicitaciones @pioj
  33. 3 likes
    Dejo aquí la segunda parte, En esta importamos el caracter creado con GIMP a UNITY, y creo una primera animacion. Hay que decir que la animación la he creado de la forma mas sencilla posible, tan solo con el animator, sin usar ningún sistema de rigging, y oye, que el resultado no es del todo malo.
  34. 3 likes
    Te recomiendo algo para que lo tomes muy encerio y lo apliques desde el momento que lees este comentario. 1 - No deberias usar UnityScripts, ya se encuentra descontinuado y es un pseudo lenguaje donde confunde muchas características de la programación orientada a objeto. Desde este momento empieza por utilizar C#, todo te sera mucho mas simple y a medida que avances podrás resolver problemáticas complejas que UnityScripts no puede. 2 - El foro recomiendo una versión estable de Unity y esta es la que deberias de tener, con más razón si estás aprendiendo. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Cuando empieces a programar con C# necesitarás practicar la abstracción de los problemas para poder reflejarlos dentro del código. Te dejo el código que publicaste en C# y comentado- //Using sirve para incluir [NameSpace (Nombres de espacio)] al codigo librerias de tercero, por ejemplo, //System contiene clases como Action que se utiliza para representar un evento. UnityEngine contiene a MonoBeahviour, Transform, Vector3,2, etc. using System; using System.Collections; // NameSpace que contiene IEnumerator. using UnityEngine; [RequireComponent(typeof(NavMeshAgent))] // Atributo que indica que el componente NombreScripts requiere que el Objeto donde esta asignado contenga NavMeshAgent, Si no lo contiene lo agrega automaticamente. public class NombreScripts : MonoBehaviour // <<< Todos los componente en Unity requiere Heredar de esta clase para que funcionen. Existen otros tipos de componentes que mas adelante podras ir descubriendo. { private NavMeshAgent m_navMeshAgent {get; set;} // Componente NavMeshAgent usado como CACHE private Transform m_meta {get; set;} // Variable Transform usado como CACHE [SerializeField] private int m_salud = 100; // Variable de Tipo Entero, utilizada para la SALUD [SerializeField] private bool m_patrullar = false; // Variable de Tipo Booleano, ¿utilizada como BANDERA (Flag)? [SerializeField] private Transform[] Puntos = null; // Variable de Tipo Arreglo de Transform, ¿Utilizada para el recorrido (WayPoints)? [SerializeField] private Action m_eventDead; // Evento, al ser invocado se llaman todos los delegados (Funciones) asignado. public bool IsAvailableMeta { get { return m_meta != null; } } // Propiedad que nos returna con un Booleano si la Variable m_meta es NULL. private void Awake() { m_navMeshAgent = GetComponent<NavMeshAgent>(); // Obtenemos el componente NavMeshAgent y lo asignamos a m_navMeshAgent. m_eventDead += () => //Asignamos un delegado Anonimo al evento m_eventDead, este delegedo Destruye el objeto cuando muere. { Destroy(gameObject); }; StartCorrutine(YieldUpdate()); // Iniciamos una corrutina para evitar buscar en cada ciclo del Update. Esto lo hago para que entiendas como funcionan estas cosas en C#. } private IEnumarator YieldUpdate() // Las Corrutinas son delegados que retornan un object IEnumerator, no es complejo de comprender pero en este momento te podria complicar bastante. { while(true) // Ciclo infinito { if(IsAvailableMeta) // Comprobar si m_meta esta asignado, si es asi, entonces que espere 1 segundo y vuelva a repetir el bucle. { yield return new WaitForSeconds(1); continue; } // si la condición anterior es falsa, entonces se llama a la función FindMeta, si se encuentra una meta se vuelve a dar 5 segundo antes de repetir el ciclo nuevamente, de lo contrario solo 1 segundo. if(FindMeta()) yield return new WaitForSeconds(5); else yield return new WaitForSeconds(1); } } private void Update() { if(IsAvailableMeta) // Si m_meta esta asignado entonces creas la logica requerida. { } } private bool FindMeta() // Metodo que nos devuelve un booleano para saber si se entontro o no una meta { GameObject go = GameObject.FindGameObjectWithTag("Enemigo"); // Buscamos un GameObject que contenga el TAg Enemigo y lo asignamos a go (Variable Local) if(go != null) // Si go es diferente a NULL tomamos el componente transform y lo asignamos a m_meta, a la misma vez cortamos la ejecución de la función retornando un valor verdadero. { m_meta = go.transform; return true; } else // Si go es NULL entonces se cota la ejecución de la función retornando un valor falso. { return false; } } private void OnTriggerEnter(Collider col) { if(col.gameObject.CompareTag("Enemigo")) // Utiliza CompareTag para verificar si el objeto colisionado tiene como TAG "Enemigo" TakeDamage(1); // Si es asi aplicar Daño de 1. } public void TakeDamage(int amount) // Función que aplica daño modificando la variable m_salud con el valor enviado a través del parametro amount. { m_salud -= amount; // se decrementa m_salud con el valor de amount. if(m_salud <= 0 && m_eventDead != null) // se comprueba si m_salud es menor o igual a cero y si m_eventDead es diferente a null. m_eventDead es null cuando no se le asigna ningun delegado. m_eventDead.Invoke(); // si la condición anterior se cumple entonces invocamos m_eventDead. } }
  35. 3 likes
    @pioj Si, se puede declarar múltiples variables y múltiples acciones. suponiendo que la estructura de un for es (variables, condición, acciones). Lo que no se puede hacer es declarar múltiples tipos de datos hasta la versión 4.5 .NET. El error está en las variables, (int alfa = 0, int beta = 9). Si trabajas con el mismo tipo de datos entonces no es necesario redeclarar. Para que el bucle funcione solo debes eliminar la declaración de tipo. for (int alfa = 0, beta = 9; alfa < 10; ++alfa, --beta ) { Console.WriteLine("Alfa:" + alfa + " Beta:" + beta); } Saludos.
  36. 3 likes
    Aqui os dejamos el nuevo trailer ,ya nos queda menos.
  37. 3 likes
    La Navidad ya está por aquí y hoy quería compartir un juego para móviles y tablets que he hecho con un toque navideño para estas fechas. El juego tiene una mecánica simple pero desafiante, el cual puedes jugar con una sola mano en tu teléfono tapeando la pantalla. Controlas a Santa Claus y debes conseguir regalos mientras te deslizas montaña abajo e intentas no dartela contra un árbol! Le he puesto unos cuantos personajes navideños desbloqueables y un ranking para que puedas ver los puntos de otros jugadores y así darle un poco más de vida al juego. Sin más os dejo el link a la google play aquí, y si me dejáis feedback y puntuación pues me ayudáis a darle un poco de visibilidad, si solo me dejáis algún comentario por aquí por el foro yo soy feliz también. Y si alguien quiere preguntar algo sobre su desarrollo porque tenga curiosidad sobre ese aspecto o algo más técnico que no sea el juego en sí sin problema . Que paséis buenas fiestas todos! Descargar
  38. 3 likes
    Hola, hoy os traigo mi nuevo juego. Si pudierais apoyarlo con 5 estrellas os lo agradecería. https://play.google.com/store/apps/details?id=com.agesdigitalgames.battlefield Soldado despierta! Call of Battlefield Zombies te está llamando para la mayor tarea de la humanidad. Los zombis invaden el mundo y la humanidad está a punto de desaparecer. Ellos están convirtiendo a cada ser humano en uno de ellos. ¡Es una masacre mundial! ¿Estás preparado o vas a dejar que la humanidad desaparezca de la faz de la tierra? ¡Arriba soldado has recibido la llamada del campo de batalla! En cada nivel tendrás que recoger las armas y municiones, esparcidas por el mapeado, para poder enfrentarte a las oleadas de zombies que intentarán comerte. Más de 20 zombies diferentes. Oleadas ingentes de enemigos a los que derrotar. Diferentes armas, desde un cuchillo hasta la mejor de las ametralladoras. Soporte para joysticks. Modo de juego para la pantalla táctil: Desliza el dedo en la parte izquierda de la pantalla para moverte. Desliza el dedo en la parte derecha de la pantalla para girar la cámara hacia derecha, izquierda, abajo y arriba. Desliza el botón Reload a derecha o izquierda para cambiar de arma. Pulsar para recargar. Pulsa el botón Action, cuando una mano aparezca sobre un objeto, para recogerlo. Descarga el juego de manera totalmente gratuita.
  39. 3 likes
    CGLocalization es un sistema de localización simple y robusto para localizar su proyecto de una manera fácil. Se envía con una ventana de edición intuitiva para ayudarlo a crear los idiomas que su proyecto va a admitir. Características: - interfaz pro, disponible en 4 idiomas (inglés, español, francés y portugués. ¡Puedes traducirlo en su idioma!) - Ejemplos de escenas incluidas. - Localizar cadenas y objetos de la unidad - Utilice componentes localizados para localizar texto, menú desplegable, imagen, audio, Sprites, prefabricados, TextMesh, TextMesh Pro y más. Puede localizar otros componentes con unas pocas líneas de código. - Añadir tipos de clave de uso común - Editar todos los valores de una clave en una ventana separada. - Ordenar las teclas alfabéticamente o arrastrando - Exportar/Importar claves de cadena a TXT y XML - Genera un script de constantes de las llaves para usar en tiempo de compilación - Traducción automática con Google Translate - Buscar claves por nombre o tipo. Disponible en Assets Store https://assetstore.unity.com/packages/tools/localization/cglocalization-130251 Capturas
  40. 3 likes
    Temo que soy portador de malas noticias. Esto es de 2016, en su habitual buen hacer, Apple capó alla por el verano pasado, la posibilidad de instalar una IPA desde iTunes, así que de momento no hay mas remedio, que yo sepa que meterla desde XCode al compilarla o bien mediante el sistema de betas TestFlight teniendo el dispositivo incluido, para lo primero, se necesita una cuenta de desarrollador de Apple (100 €) y para lo segundo que te incluyan en un equipo de testeo, pero lo tiene que hacer alguien que tenga la cuenta de desarrollador (100 €) La otra opción es publicar la app en la tienda (100 € mas una cantidad de sufrimiento inconmensurable). O sea, que o pagas o no ves tu app en un dispositivo iOS. Qizá si tiene un JailBreak haya alguna forma de pasar el IPA, lo desconozco, pro la forma en la que se explica en el articulo no es válida porque las opciones han desaparecido hace dos versiones de iOS. Se que había algún asset en la asset store que incluso generaba los IPA en el propio PC, pero lo vi hace mucho tiempo, a no ser que haya descubierto algún sistema para pasar el IPA al dispositivo iOS, no hay tu tia.
  41. 3 likes
    ¡Atención! Ningún ejecutable de Unity pesa meno de 50MB, al descargar el archivo el Antivirus me advirtió de algo anormal en el fichero. El fichero es un ejecutable el cual no contiene la estructura comúnmente conocida de Unity3D - En lo particular lo ejecute dentro de una máquina virtual y el mismo abre una consola e inmediatamente se cierra. ¡NO SE PUEDE JUGAR! Desconozco si es un problema del desarrollador o es un intento de phishing ----------- - Saludos - Si alguien se anima a probar puede compartir su experiencia para sacarnos las dudas.
  42. 3 likes
    Haces tu modelo 3D del cuerpo, lo rigeas, lo animas y esa parte queda lista. Luego haces la ropa y la rigeas con exactamente el MISMO eskeleto del cuerpo. En este punto tienes problema de clipping, la superficie del cuerpo sobresale de la superficie de la ropa en algunas partes cuando se ejecuta la animacion. Lo anterior lo corriges con el uso de alpha maps en el modelo 3D de tu cuerpo humano, las areas afectadas por el alpha map son precisamente las que están cubiertas por la ropa que usa el personaje y asi no se ve que sobresalga ninguna parte, cada alpha map debe ser especifico para cada pieza de ropa. Saludos.
  43. 2 likes
    Cuando se ejecute tiene que existir como mínimo un suscriptor. No se inicializa ni se crea. Ya estás enviando parámetros distintos. Envías this.name por ejemplo, que será distinto en cada objeto (a menos que les hayas puesto el mismo nombre, aunque a nivel de instancia será distinto). Deberías mirarte el tema de eventos y delegados en C#, ya que es mucho más potente y ordenado. Al principio es complicado de entender aunque cuando lo consigas te darás cuenta de la potencia que tiene. Un vídeo de ejemplo. Hay muchos:
  44. 2 likes
    Buenas, hay muchas formas de llamarlo, una podría ser algo así: void Start() { StartCoroutine(GetTime()); } public IEnumerator GetTime() { UnityWebRequest www = UnityWebRequest.Get(URL_SERVER); // URL_SERVER, es la dirección donde está alojado el archivo .php: http://servidor.com/archivo.php yield return www.SendWebRequest(); if (www.isNetworkError || www.isHttpError) { // Ha habido un error al obtener el tiempo } else { Debug.Log("La hora del servidor es: " + www.downloadHandle.text); } } Eso sirve si solo necesitas mirar la hora, pero para un juego que funciona según el tiempo que pasa, se podría romper muy fácil solo cambiando la hora del dispositivo. Por ejemplo en los juegos tipo Clash of Clans, que construyes algo y tiene que pasar 5 horas para que se termine de construir, podrías ir a configuración de tú móvil, adelantar tu reloj 5 horas, y volver al juego y el juego detectaría que ya han pasado esas 5 horas, por lo que el juego estaría roto...
  45. 2 likes
    Normal, es que mis directos son "jai qualiti"...
  46. 2 likes
    Buenas, La mejor forma de hacer lo que dices es checkear la hora en un servidor. Un llamada a un .php con algo así ya te serviría: <?php date_default_timezone_set('Europe/Madrid'); $currenttime = date("m-d-Y H:i:s"); list($ddd,$ttt) = split(' ',$currenttime); echo "$ddd $ttt\n";
  47. 2 likes
    Hola ¿Como están? ¿Eres amante de las letras? Aprende palabras en inglés jugando y de forma divertida. Navy Crush es un juego puzzle de letras orientado al aprendizaje de palabras en inglés con su traducción para incrementar tu vocabulario de inglés. Reedbed les invita a testear "Navy Crush English" y formar parte de nuestro proyecto para mejorarlo, gracias y un buen saludo a todos. Envianos tu correo a: reedbed.mx@gmail.com y menciona que quieres ser parte de la versión beta de "Navy crush English" ¡Combina, juega y aprende vocabulario en inglés con Navy Crush English! Nuestro sitio web: http://reedbed.mx/
  48. 2 likes
    Ese debería ser el mensaje de bienvenida al foro cuando te registrás ... Bienvenido a la comunidad nuevo usuario! ... Primero dejanos decirte alto muy importante: No deberias usar UnityScript, ya se encuentra descontinuado y es un pseudo lenguaje donde confunde muchas características de la programación orientada a objeto. Desde este momento empieza por utilizar C#, todo te sera mucho mas simple y a medida que avances podrás resolver problemáticas complejas que UnityScript no puede ... en fin, bienvenido a la comunidad ! El Admin :) Ningun "find" en update, es la regla de oro de la programación en Unity. Tampoco ningun Camera.main (que es similar) y evitar a toda costa reiterados GetComponent's. Seguramente exista una forma de arreglarlo, siempre la hay (o casi siempre). Por ejemplo, podrías primero (en start por ej) buscar las referencias a todos los enemigos para luego (en update) empezar a laburar sobre el transform y definir la "meta", algo muy distinto que andar frame a frame buscando a todos los enemigos.
  49. 2 likes
    Bueno, como puntapié inicial y para pasar el rato, como harían el juego entero Slender? UI, el sistema del enemigo/AI, cámaras, first person controller, diseño de nivel, etc ... a ver ... algún valiente? (Es que el sistema que usó el creador inicialmente fue algo rebuscado pero a su vez muy ingenioso)
  50. 2 likes
    Muchas gracias por jugarlo! Ya me lo ha dicho bastante gente :( Aunque no tengo planeado sacarlo en iOS por el momento, lo que si puedo hacer es sacar una versión web y ponerlo en algún portal como itich.io para que al menos podáis probarlo en pc, no sé si desde un iphone o ipad se podrá también, yo diría que sí, al menos el último juego que exporte en webgl con unity para una game jam en itch.io me funcionaba en mi Android. Hombre mi amigo Debug! xD Si yo también pienso que es una formula que va bastante bien en móvil, tal vez en el futuro me replantee hacer una reskin de este juego y ampliarlo con niveles, power ups, etc pero manteniendo la misma mecánica. Efectivamente uso las partículas de unity, y es como tu dices, el spawn de partículas está pegado al jugador, vamos que es un hijo del player en la jerarquía y lo sigue. Pero aún así yo personalmente no noto ese efecto raro, para mi queda natural. De hecho el santa no se mueve de su posición Y en ningún momento, solo so posición X y son los arboles y los regalos los que spamean fuera de pantalla abajo y se mueven hacia arriba, creando la ilusión de que el santa se desliza hacia abajo, y aún sabiendolo que es así la ilusión de que es el santa el que se desplaza montaña abajo funciona genial. En cuanto a lo de las partículas, alguna sugerencia de como lo harías? Aunque ya te digo que a mi me queda como un rastro natural y no me da la sensación de que vaya pegado al jugador... no sé.... a ver si alguien quiere comentar algo más al respecto. Lo del santa saliendo rebotando ahí a lo loco puede molar... pero es verdad que ya son varios los que me han dicho que les encanta ver como el santa se rebienta jajajaja se ve que a la gente le gusta ver al pobre santa sufrir xD
×
×
  • Create New...