#31 No entiendo el por que de un casco de motocross en el espacio con lo guapo que esta el del concept :qq:
Pero el del concept es un rollo mas Mad Max, creo que no buscan eso , desconozco que papel tiene ese tio pero teniendo en cuenta que el mapa es ciudad (supongo) yo lo veo bien
#34 Ya pues yo le dejo mis dies
Uno de mis primeros juegos (el primero al que le he dedicado tanto tiempo, y aún así no deja de ser una chorrada xD)
W = saltar, S = Agacharse
http://www.didacdevart.com/runner/
Lo he programado y diseñado absolutamente todo desde cero (excepto la imagen de la corredora, utilicé una referencia importante xD), quise reinventar la rueda para ver como se hacen las cosas desde abajo.
He utilizado HTML5 <canvas> y Javascript.
El <nav> está de adorno por ahora, si clicais a los href no os lleva a ningún lado.
Quiero opiniones, buenas y malas. Si el juego gusta lo puliré (se puede mejorar mucho todavía).
Cualquier duda, recomendación, consejo (con fundamento), disparad.
He utilizado Sublime Text 2 para el código y Photoshop para diseños y animaciones.
#37 Si, eso es porque la corredora es un cuadrado, la esquina inferior derecha no se ve pero colisiona contra el obstáculo. Creo que lo voy a arreglar ahora mismo porque todos se han quejado de esto xD
#37 Arreglado lo de la colisión (un apaño rápido, todo es mejorable)
#36 si vas agachado todo el rato aunque te zampes los obstaculos desde abajo, no te quita vidas xD
Si saltas y en medio del salto te agachas, se pega al suelo.
Imagino que lo sabrás ya pero... xD
#36 Es un mapa muy corto en bucle. Podrías hacerlo más aleatorio (al menos me he fijado que se me ha repetido 6 veces el mismo patrón). Por lo que hay ahora el 90% se puede completar agachado.
Pero no está nada mal.
#44 No he tocado nada en remoto, así que tiene que estar igual. Estoy con lo de las colisiones al agacharse, cuando esté solucionado lo resubiré
En cuanto a la repetición de obstáculos. Los seis primeros se generan aleatoriamente y luego se almacenana en un array. Cuando un obstáculo desaparece de la pantalla, se elimina su posición del array y se añade en la ultima. Vamos, que se va repitiendo, pero es relativamente fácil de cambiarlo.
Ahora estoy con lo de las colisiones, que es un código que hice hace tiempo xD
#46 Si te refieres a la corredora, no te mentiré, el 90% lo cogí hecho (es la referencia que menciono antes). Yo le he modificado cosas como el pelo y algunas curvas. Por mi mismo no lo habría hecho igual xD.
Ale, solucionado lo de las colisiones al agacharse y los obstáculos ya no son un patrón repetitivo
http://www.didacdevart.com/runner/
Ahora es ligeramente más divertido que antes xD.
Gracias a todos por vuestro feedback, sigo aceptando bugs/críticas/consejos.
#49 ahora si estás saltando y justo antes de pasar el obstáculo le das a "S", se pega al suelo y tampoco colisiona (sí, es ganas de tocar las narices xD pero es que lo estaba probando)
#50 Eso es porque el área de colisión del obstáculo es la primera tira de píxeles en el eje Y. Una vez has pasado ese tramo ya no colisionará. La corredora supera ese tramo al saltar, en el caso que dices.
Por lo tanto es algo "normal", si hiciese que todo el obstáculo fuese colisionable, la dificultad aumentaría demasiado y tendría que alargar el salto. Además, el juego tendría que hacer bastantes más cálculos en cada bucle, lo cual podría empezar a ralentizarlo en ciertos PC's.
#51 Ya que los obstaculos son rectangulares, no usar rectángulos para colisiones en este caso es una tontería. Puedes añadir un pequeño padding a las dimensiones del rectángulo de colisiones para arreglar tu problema de "sería muy difícil"
#51 las colisiones en 2D se suelen tratar practicamente siempre como cajas, un ejemplo que siempre me gusta dar es este
#52 #53 Y como harías la comprobación de colisión de forma eficiente?
A mi solo se me ocurre algo como: (pseudo-code hecho rápido y mal)
Siendo box1 el jugador y box2 el obstáculo y sabiendo que la coordenada 0 0 es la esquina superior izquierda:
if(box1.x + box1.width <= box2.x ){ //Comprobación colisión en eje X
if(box1.y >= box2.y && box1.y + box1.height <= box2.y + box2.height){ //Comprobación colisión en eje Y
return true;
}
return false;
}
Este es el estilo de colisiones que he usado en este juego. Dudo mucho que sea medianamente eficiente, aunque me he topado con librerías de colisiones que utilizaban un sistema igual o muy similar...
#54 Lo hice, y luego lo quité, porque conforme juegas algunos obstáculos se complican ya que se juntan, si tuvieses que terminar el salto a veces te comerías dos obstáculos en el aire.
#54 También llamadas hit boxes, algo muy a tener en cuenta en juegos de lucha/shooters (si te lo tomas muy enserio claro)
#54 algo vi pero no encuentro el video, es como dice #56
De hecho en el cs 1.6 habia bastante polémica con el asunto
#55 haz una función que pasados dos rectángulos calcule si están superpuestos, te ahorras tener que mirar coordenadas todo el rato
Edit:
Tenía este enlace entre mis marcadores desde hace años imagino que te servirá http://juank.black-byte.com/xna-colisiones-2d/
#56 #57 a ver, sé lo que es una hitbox xD quería ver el video del street fighter en funcionamiento
#55 Yo le veo dos soluciones, o una animación extra para el descenso rápido, o un rediseño de obstáculos (comprobar que tras un salto, se deja el espacio mínimo para agacharse), depende del diseño de juego que quieras implementar, pero así tal cual parece un glitch. Eso sí, es tu juego y te lo f***** como quieres
Por cierto, si agacharse tuviera un tiempo limitado le daría un añadido al reto. En Jailbreaker 2 tienen la mecánica de saltar y agacharse también como base.