domingo, 26 de marzo de 2017

Rock Climber - Part 5


Español | English


Hola a todos! Esta semana la quise dedicar a arreglar todo lo que tenía para comenzar a tener un prototipo jugable.

Pude de una vez por todas solucionar un problema que hacía que el gancho tenga una orientación distinta a donde se apuntaba justo después de haber escalado la montaña. 

Esto se solucionó simplemente haciendo que cada vez que el jugador escale y  rote, el gancho apunte hacia un posición fija, así también se puede fijar la rotación del gancho.

Además de eso, solucioné un par de problemas con las colisiones entre el jugador y el borde de la montaña, con lo que ahora se puede ir hacia cualquier parte de la montaña.

Por lo que ahora se tiene algo jugable:



 Lo siguiente por hacer es seguir agregando cosas sobre esta base, objetos para agarrar, más obstáculos y alguna que otra mecánica.

Seguramente lo próximo en lo que me voy a dedicar es en hacer que el jugador tenga un tiempo limitado mientras esta quieto antes de caerse, lo que va a obligar al jugador a seguir escalando y decidir rápido hacia donde ir.

-L


--------------------------------------------------------------------------------------------------------------------------
English


Hi everyone, This week I wanted to dedicate my time to fix everything I had in order to have a playable prototype.

Finally I could solve a problem that made the hook have a different rotation than where the player was pointing, right after climbing the mountain.

This was easily solved by making the hook have a fixed position and rotation once the player has climb and rotate.

Also, I've solved some issues with the collisions between the player and the edge of the mountain, so now the player can go to every part of the mountain.

So now we have something playable:




The next thing to do is to keep adding things above this base, objects to grab, more obstacles and some mechanics.

I'll surely focus on making the player have a limited amount of time when he/she is still before he/she falls, so it makes the player to keep climbing up and decide quickly where to go.

-L

lunes, 20 de marzo de 2017

Rock Climber - Part 4

Español | English



Hola a todos!!!
Esta semana estuve un poco ocupado así que me decidí por hacer algo simple para avanzar con el proyecto.

Así que decidí crear la función que va a ubicar obstáculos en las montañas. Este proceso se hace después de que la montaña se creó y se "rellenó" con sus respectivos tiles, por lo que el obstáculo se posiciona por encima de la montaña.

Si bien convendría que esto no ocurra así, hay que recordar que esto es con el fin de crear niveles para elegir luego los mejores, por lo que las tareas "finas" las puedo hacer a mano.

La función consiste en simplemente ubicar un prefab del obstáculo en una posición fija de X (el "borde" de la montaña) y en una posición aleatoria de Y. Gracias a como se construyó la montaña, esto es muy fácil de hacer y no hay que hacer cuentas para posicionar bien el obstáculo.


Esta es la zona en donde se van a Spawnear los obstáculos


Ejemplo de Obstáculo, se puede ver claramente como esta por encima del "pico" de la montaña


Todavía no me decidí de si los obstáculos deberían o no ser más altos, además, también me faltan crear los otros tipos de obstáculos que puede haber, pero eso para más adelante.


-L



--------------------------------------------------------------------------------------------------------------------------------------
English 




Hello everyone!!!
This week I've been a bit busy, so I've decided to make something little in order to progress with the project. 
 
So I've decided to create a function which will place obstacles in the mountains. This process is made once the mountain is created and filled up with its tiles, so the obstacles are on top of the mountain. 
 
Although it would be convenient that this process took place in a different way, we have to remember that the objective of our task is to create levels in order to pick the best ones later; that is why the delicate assignments have to be done by hand. 
 
The function only consists on placing the prefab  of the obstacle in a determined x position (the hillside) and a random Y position. Thanks to the way the mountain was built, this is very easy to be done and you don't need any calculations to place the obstacle correctly.



This is where the obstacles are going to spawn





Example of an obstacle placed right above a "peak" of the mountain.



 
I still haven't  decided weather the obstacles have to be taller, also, the creation of the other types of obstacles is a pending issue, but that for the next time...





-L

sábado, 11 de marzo de 2017

Rock Climber - Part 3




Hola a todos, esta semana estuve trabajando en el sistema para crear los niveles, más precisamente, creando la "base" de los niveles que son el diseño base de las montañas que vamos a escalar.

Voy a explicar de nuevo como va a ser el proceso para crear los niveles:

  • Primero se crean las formas de las montañas
  • Luego se ubican los obstáculos y los items a agarrar
  • Por último los detalles
El primer paso ya esta creado, acá pueden ver unas fotos de como son lo básico de las montañas:





Estos son 2 simples ejemplos, a estas bases se le van a agregar más detalles encima.

Lo bueno de optar por este método es que simplemente tengo que elegir el diseño del cual me guste arrancar dentro de todos los aleatorios que puedan salir.

Para crear este sistema cuento con un GameObject que contiene 2 EdgeColliders2D, en un primer paso, genero la "forma" de cada montaña  por separado con su respectivo Collider. Luego, guardo en una matriz los valores en donde hay picos, para distinguir en donde debo rellenar con cuadrados y en donde con triángulos.

Por último, se recorre la matriz y se verifica si se debe poner un cuadrado, algún triángulo o nada. Lo más difícil fue orientarse sobre en que lugar de la matriz poner el valor que corresponde.

Del lado más técnico, lo más difícil fue descifrar como hacer para recorrer la matriz de abajo para arriba y encima, teniendo que por ejemplo el punto (1,0) representa 1*x + 0*y, Que es lo contrario a como se anotaría matricialmente (0,1) (fila 0, columna 1).

Después de todo me siento satisfecho con el resultado, falta retocar algunos parámetros como la distancia entre las montañas o la altura de las mismas, pero por suerte el sistema lo creé de forma que solo tenga que elegir los valores que quiera para obtener esos distintos resultados.

-L

viernes, 3 de marzo de 2017

Creating a switch to change languages inside a Blog










Hola a todos, en este Post voy a explicar como crear el switch que permite cambiar entre idiomas en un Post de un Blog. Quizá hasta puedan crear una lista en vez de un botón para tener más de dos opciones aplicando casi todos los mismos pasos.

Primero hay que entender que para crear el botón se deben crear 3 aspectos distintos:

  • El botón en sí con HTML
  • El diseño del botón con CSS
  • La programación del botón con Javascript

Por suerte, todo esto se puede hacer dentro del blog mientras el blog permita la edición de HTML cuando creamos los Posts. Primero voy a explicar que se necesita:

Uno debe tener unos divisores (div) en HTML para cada uno de los distintos lenguajes, esto quiere decir que, si tenemos un texto en español y otro en ingles, debemos (En el editor de HTML) "encapsular" los textos dentro de un div de la siguiente manera:

<div id="esp">
                         Texto en Español
</div>

<div id="eng">
                         Text in English
</div>

Es importante que demos los "id" ya que con esos los vamos a identificar más adelante.

La lógica entonces es, si apretamos el botón para ir a la opción en inglés, se esconde el div de español y se muestra el de inglés.

Lo que vamos a hacer primero es buscar un botón tipo switch en internet, si es posible con CSS incluído para personalizarlo y agregarlo (o crearlo personalmente si prefieren).

Recomiendo la siguiente página que enseña como hacer un botón switch:
https://www.w3schools.com/howto/howto_css_switch.asp

Siguiendo el ejemplo de esa página, vamos a agregar el botón mediante HTML simplemente copiando y pegando en nuestro editor HTML.

Luego debemos copiar el diseño del CSS. Para esto necesitamos, dentro de nuestro editor, copiar el código dentro de etiquetas <style> </style>. A partir de ahí deberían poder ver el diseño del botón, de no ser posible, significa que primero hay que publicar el Post para poder verlo.


Lo último por agregar es el Script en Javascript pero primero volvemos al botón en su HTML que pegamos y  dentro de su etiqueta "<input .." colocamos: "onclick="myFunction()" " (sin los primeros "").

Con esto, le decimos al botón que cuando lo presionen ejecute la función "myFunction()" que vamos a crear ahora.

Para eso, debemos crear el código dentro de etiquetas <script> </script> en nuestro editor de HTML.

 Voy a compartir el código que utilizo:

<script>
function changeLanguage() {
    var x = document.getElementById('esp');
    var y = document.getElementById('eng');
    if (x.style.display === 'none') {
        x.style.display = 'block';
        y.style.display = 'none';
    } else {
        x.style.display = 'none';
        y.style.display = 'block';
    }
}
</script>

Lo que hace es, primero encontrar a los divs que antes marcamos como "esp" y "eng" y luego, al apretar el botón, mostrar uno y esconder el otro.


Como último detalle, falta esconder el lenguaje que queremos que este escondido por defecto. Tomando como ejemplo que quiero esconder el texto en Inglés, lo que hay que hacer es: dentro de div, agregar una propiedad de la siguiente manera:

<div id="eng" style="display:none;">

De esta forma, se le indica a esta división que este oculta al principio.

Eso fue todo, espero que les haya sido útil. Si utilizan la misma forma de dividir los textos al hacer sus Posts, la próxima vez solo tienen que copiar y pegar el HTML, CSS y Script del boton tal como esta para que funcione. (Pueden hasta copiar el HTML y el CSS de este botón si miran el código fuente de la página).

-L