Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

8-Bit Demo (2D Platform)

Iniciado por Jocyf, Enero 15, 2018, 08:59:27 PM

Tema anterior - Siguiente tema
Cita de: Jocyf date=1516626239El mapeo usando tiles es maravilloso (siempre lo ha sido) y seguro que hay alguna manera de hacerlo; a fin de cuentas si puedes acceder a cada tile, no debería de haber problemas para cambiar los pixeles de cada uno de ellos en runtime.
   


El tema para mí es es el collider, si modificás un pixel como adaptás el collider del tilemap?
 
Cita de: Jocyf date=1516626239Broforce por ejemplo, destruye los tiles directamente, no los modifica (junto con su colision) para poder modificar el mapa completamente (eso era lo que quedaba guay en los lemmings).
   


Pensando en voz alta...Se podría separar al tile dañado y trabajarlo como una mesh, excluyendolo del tilemap. Lo dificil claro es retriangular la mesh cada vez que se realiza un disparo sobre ella. Existe un script muy conocido llama Triangulator de la wiki que lo que hace es dejar bonita una mesh en donde vos vas poniendo vertices, el tipo calcula como debería quedar y retriangula todo (calculando los índices...o triangulos como los llama erroneamente Unity). Entonces, si disparás al tile, tomás el punto de contacto, por cercanía creas un pequeño "cubo" de vertices o cualquier tipo de figura (vaya uno a saber como ) y finalmente recalculás el polygonCollider del bloque. Algo así me imagino (Verde : Composite Collider del Tilemap):
 

 
El cubo está bien grande para que se vea, pero por supuesto sería más chico se podría configurar su tamaño. Ahora que lo pienso podría tranquilamente compartir el mismo Composite collider ...
 
No es una colisión per-pixel, es parecido (supongo) a lo que realiza este asset (mas o menos 2:46):
 


   
eature=oembed" width="480">

 
Quizás sea una opción bastante fea , quizás no, solo una idea.

Cita de: Jocyf date=1516046367Aqui os dejo una pequeña demo que he hecho en cuatro fines de semana (porque sí, porque me apetecía hacerlo). Es una pequeña demo de un juego de plataformas 2d de 2 niveles usando graficos pixel art y Unity.
   
   
      Podés probarlo aquí: http://www.jocyf.com/Preview/8BitPlatform/index.html
   
   
      Edito: Por cierto, hay unas cuantas cosas más que he ido publicando en mi página web y que podéis ver desde aquí: http://www.jocyf.com/previews.html
   
   
       
   
   
      
   


Es una pasada, me gusta que el salto dependa del tiempo que tengas el espacio apretado y el colorido que tiene, lo que pasa es que soy tan paquete que he muerto 10 veces en los primeros 10 segundos de juego, pero esta cañón.

Cita de: lightbug date=1516629264El tema para mí es es el collider, si modificás un pixel como adaptás el collider del tilemap?
   


hace unos años hice un sistema de fisicas basado en pixeles, (directamente comprobando el color de cada pixel)....(de los pixeles debajo y a los lados del personaje).... he de decir que el escenario era una unica imagen entera, y no hecha en pedazos(no eran tiles)...
 
pero era completamente "destruible" y no gastaba casi recirsos del CPU.... me atrevo a decir que era mas eficiente que los collider y fisicas por poligonos...
 

Color col = texture.getPixel(x, y);

 
 

Cita de: Igor date=1516633658hace unos años hice un sistema de fisicas basado en pixeles, (directamente comprobando el color de cada pixel)....(de los pixeles debajo y a los lados del personaje).... he de decir que el escenario era una unica imagen entera, y no hecha en pedazos(no eran tiles)...
   
   
      pero era completamente "destruible" y no gastaba casi recirsos del CPU.... me atrevo a decir que era mas eficiente que los collider y fisicas por poligonos...
   
   

Color col = texture.getPixel(x, y);

   
       
   


Ah mira, podrías mostrarlo un poco  ... osea, hiciste polígono vs pixel?
 
Lo que digo es que la colisión entre polígonos vs pixels me parecen incompatibles salvo que uses a full pixels (como los juegos viejos de la nes por ej), quizás por supuesto me equivoque y se pueda. Me baso en los métodos del artículo que mostré antes.
 
 
 
 

Cita de: Jocyf date=1516187608tUn characterController2D que funcione como funciona el de 3D, sin usar un rigidbody pero que permite un control muy preciso (aparte de poder subir escaleras y esas cosas), permitiría tener un control de plataformas Kinetico (siin usar fisicas) y a la vez, no tener que tirar de Raycast como un loco. Algo así ya integrado en las fisicas 2d del Unity, permitiría tener por defecto un andador guay a partir del cual poder hacer maravillas, al estilo de mi andador en 3d que tengo a la venta.
   


¿En que momento el charactercontroller3D no usa rigidbody?, me he debido de perder algo.... xD

Cita de: Eskema date=1516640216¿En que momento el charactercontroller3D no usa rigidbody?, me he debido de perder algo.... xD
   


Supongo que con rb se refiere a rb dinámico y no a componente rb, pero sea así o no, un "character controller" puede no usar un rb tranquilamente, es más puede no tener collider ni nada (va a depender de las prestaciones del mismo). Si vos detectás todo por raycast, o como seá y acomodás al personaje en base a los resultados del cast te vas a poder mover bien por el escenario de forma precisa. Ahora, si querés cualquier tipo de interacción con otros rb's/colliders (rb dinámico, kinemáticos, triggers,...) necesitás usar rb y collider (por lo menos basandome en la famosa tablita).
 
 

Cita de: lightbug date=1516641485Supongo que con rb se refiere a rb dinámico y no a componente rb, pero sea así o no, un "character controller" puede no usar un rb tranquilamente, es más puede no tener collider ni nada (va a depender de las prestaciones del mismo). Si vos detectás todo por raycast, o como seá y acomodás al personaje en base a los resultados del cast te vas a poder mover bien por el escenario de forma precisa. Ahora, si querés cualquier tipo de interacción con otros rb's/colliders (rb dinámico, kinemáticos, triggers,...) necesitás usar rb y collider (por lo menos basandome en la famosa tablita).
   
   
       
   


A ver, que te lias xD
 
Él se refiere al charactercontroller 3D que unity incluye en sus scripts default. Ese controller usa un rigidbody, que no hace los calculos de la nada... xD ese charactercontroller ha estado ligado a un rb toda la vida.
 
Crearte tu un controller ya es otra cuestion :)

Cita de: Eskema date=1516646218ese charactercontroller ha estado ligado a un rb toda la vida.
   


Yo la verdad los usé hace mucho, así que no te puedo contestar con total seguridad pero los FPSController(prefabs) que yo conocía no usaban un rb dinámico sino un kinemático + un characterController (componente), el cual es lo que se llama "Motor", obviamente Unity lo llama "Character Controller" (dando lugar a más confusión)... claro, es Unity, si a los gráficos maximos los llama "Fantastic" te podés esperar cualquiera cosa xD...
 
Si alguien está interesado pueden descargarse el assets de Unity essencials https://assetstore.unity.com/packages/essentials/tutorial-projects/2d-game-kit-beta-107098 que trae un controller 2D dinámico y ya van a ver los problemas que trae, aunque debo decir que anda bastante mejor de lo que esperaba, pero no es igual a un kinemático, ni cerca.

Yo me refiero a que el "character controller" incluye un rb, me da lo mismo si es kinematico o usa gravedad. Es un rb que era mi punto, como se gestione.... ya queda fuera de discusion xD
 
 
 
Anyways, los controllers todos cuestan un huevo y parte del otro de hacer, por eso hay tantos paquetes en la store, como el corgi, el platformer pro, etc, etc. Pensar que unity tenga que darte uno asi por la cara.... es de ser bastante ingenuo.
 
Y sobre todo, lo peor es no entender que un engine solo te da la base, ya te construiras tu las herramientas que necesites.

Cita de: lightbug date=1516636461Ah mira, podrías mostrarlo un poco  ... osea, hiciste polígono vs pixel?
   


no, no era poligono contra pixel....
 
silplemente cojia la posicion de mi personaje.... y miraba que pixeles tenia arriba, abajo, y a los lados... (transformando la posicion del personaje, a las coordenadas UV de la imagen)
 
...miraba el color del pixel con texture.GetPixel(x, y)
 
 

Enero 24, 2018, 07:16:39 PM #25 Ultima modificación: Enero 24, 2018, 07:21:16 PM por Jocyf
Hola,
 
Veo que os dejo solos 5 minutos y me montáis una fiesta!!!!!
 
Vamos por partes:
 



   
Cita de: Adrianete date=1516630694Es una pasada
         
      
   

       
   

[/quote]
 
Gracias!!! Me encanta el éxito que está teniendo la puñetera demo.
 
 
 
Cita de: lightbug date=1516629264Se podría separar al tile dañado y trabajarlo como una mesh
   


Hombre, si  se pdría pero me parece un poco complicado porque puede haber bastantes tiles involucrados. Este metodo se usa mucho para hacer efectos con sprites, es decir, conviertes el sprite a un mesh y luego modificcas el mesh para conseguir diferentes cosas. La hierba en 2D de Ori and the blind Forest, se hace así, es un mesh en el que mueven los vertices superiores para hacer que la hierba se mueva a los lados cuando pasas por delante. Es un truco muy bueno y que queda muy bien si el sprite tiene resolucion (si es pixel art, como en mi demo, queda como el culo).
 
 
 
 
 
Cita de: Eskema date=1516640216¿En que momento el charactercontroller3D no usa rigidbody?, me he debido de perder algo.... xD
   


Un CharacterController para usarlo en primera persona NO usa un rigidbody. Yo tengo el FPC Pro a la venta (que salta, se agacha, sube escaleras, nada, bucea y vuela) y NO usa ningun rigidbody. Es más: CubicLand o CloudsToy (ambos proyectos se pueden descargar gratis a día de hoy) usan andadores con CharacterController y NO tienen ningún rigidbody. Unity, en las versiones antiguas v2.x y 3.x tenia en los Standard Assets un First Person Controller y NO tenía ningún rigidbody en él, solo el CharacterController.
 
Un CharacterController es un componente interno de Unity (no es un script), que proporciona la posibilidad de usar un andador SIN tener que usar fisicas, esa es precisamente la razón de su existencia. No puedes aplicarle fuerzas, ni recibe a su vez fuerzas externas, ni tiene peso o inercia. Mas info:
 
https://docs.unity3d.com/ScriptReference/CharacterController.html
 
https://docs.unity3d.com/Manual/class-CharacterController.html
 
 
 
Cita de: Igor date=1516633658Color col = texture.getPixel(x, y);
   


En cuanto al sistema de pixeles de Igor buscando el color en la propia textura, no es una mala idea. Es más, ya sé que hace años usé algo parecido para eliminar pixeles usando algo de esto, me ha venido a la memoria al leer tu post. Lo estoy buscando entre mis proyectos a ver si lo encuentro pero no aparece (es que tengo mogollon de cosas hechas).
 
De todos modos, yo lo que haría seria buscar los tiles adyacentes y eliminar varios pixeles de los tiles dejando un hueco (en el caso de una explosion o algo así intentar dejar algun tipo de agujero en el suelo). No sé, es cuestión de probar y ver lo que da de sí el invento.  Gracias por la idea, Igor.

Cita de: Jocyf date=1516817799 
   
   
      Un CharacterController para usarlo en primera persona NO usa un rigidbody. Yo tengo el FPC Pro a la venta (que salta, se agacha, sube escaleras, nada, bucea y vuela) y NO usa ningun rigidbody. Es más: CubicLand o CloudsToy (ambos proyectos se pueden descargar gratis a día de hoy) usan andadores con CharacterController y NO tienen ningún rigidbody. Unity, en las versiones antiguas v2.x y 3.x tenia en los Standard Assets un First Person Controller y NO tenía ningún rigidbody en él, solo el CharacterController.
   
   
      Un CharacterController es un componente interno de Unity (no es un script), que proporciona la posibilidad de usar un andador SIN tener que usar fisicas, esa es precisamente la razón de su existencia. No puedes aplicarle fuerzas, ni recibe a su vez fuerzas externas, ni tiene peso o inercia. Mas info:
   
   
       
   


La cosa es, "control that does not make use of Rigidbody physics" y ahi lo dice claro, no usa las fisicas, pero NO dice que no tenga un rb (que era el motivo de mi comentario)
 
Desconozco lo que unity ha podido hacer en unity 4.x, 5.x o 2017, pero ese charactercontroller usa (o usaba) internamente un rigidbody camuflado para que nadie se de leches configurando ni volviendose loco. Es decir, nunca se ha visto el rigidbody ahi para mani***r, no se añadia en la escena, todo pasaba under the hood a nivel kinematico. No usa raycasts, todo esta tapado para darte un script facilon, o al menos en unity3.X era asi.
 
No he vuelto a mirar eso nunca mas, asi que no se si lo han actualizado y ahora internamente usa raycasts o como se lo montan. Y mi comentario era mas por eso, que no se vea no quiere decir que no este :)
 
 

El characterController es una parte integral del motor de fisicas. El motor de fisicas que usa Unity es nVidia Physics. Por lo tanto en unity también está heredando dicho componente y el charcater Controller que tu ves como Componente es , de hecho, una parte integral de las physics que Unity se encarga de adaptar al engine, como hace con todos los demás componentes que tienen que ver con las fisicas.
 
Más info sobre el CharacterController a nivel más técnico:
 
http://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/Manual/CharacterControllers.html

Febrero 06, 2018, 09:20:55 PM #28 Ultima modificación: Febrero 06, 2018, 09:21:03 PM por Jocyf
Hola a todos, este fin de semana he estado mapeando un nuevo nivel y probando unas cuantas cosas (muchas NO estan incluidas en el nuevo nivel) como objetos con fisicas (para empujarlos, inclinarlos, etc...), plataformas que se caen, mejoras en el código de las cuerdas, pequeños cambios en el efecto postproceso de scanlines, etc... 
 
Como siempre podéis probarlo aqui: http://www.jocyf.com/Preview/8BitPlatform/index.html
 
He estado probando a 'romper' el terrain modificando los tiles en sí y funciona bien, pero en WEBGL unity lanza un error que tienen que arreglar ellos, una pena. En fin, con tiempo y una caña...
 
Saludos!
 
 

Cita de: Jocyf date=1517948455Hola a todos, este fin de semana he estado mapeando un nuevo nivel y probando unas cuantas cosas (muchas NO estan incluidas en el nuevo nivel) como objetos con fisicas (para empujarlos, inclinarlos, etc...), plataformas que se caen, mejoras en el código de las cuerdas, pequeños cambios en el efecto postproceso de scanlines, etc... 
   
      Como siempre podéis probarlo aqui: http://www.jocyf.com/Preview/8BitPlatform/index.html
   
   
      He estado probando a 'romper' el terrain modificando los tiles en sí y funciona bien, pero en WEBGL unity lanza un error que tienen que arreglar ellos, una pena. En fin, con tiempo y una caña...
   
   
      Saludos!
   
   
       
   


mola! cuando pasas por el puente y este te impulsa para arriba, salta mas. lo único así que he visto es que para bajar las escaleras hay que saltar primero (no se si tu idea era que fuera así).
 
saludos.
 
 

Etiquetas: