[Devlog] - Cursed Gem

AikonCWD

Hoy haré pruebas con los tilesets. En mi cabeza queda guay la idea de diferentes tonalidades de verdes y el tileset amarillo (menos brillante) y rojo. Ya os iré mostrando.

Por el momento quiero saber si el movimiento de los ojos del boss no da sida:

He preferido poner la pupila en el borde del glóbulo ocular, ya que estaremos por el suelo mucho más rato. Arriba a la cabeza solo subiremos para meter un hit y bajar rápidamente. Queda un poco raro, pero es un poco complejo hacer el efecto bien con pocas líneas de código

2 respuestas
Kaos

#1471 Los veo muy estáticos en el eje horizontal. Creo que estaría bien que se movieran un poco.

1 respuesta
carra

#1472 Estoy de acuerdo. De hecho parece como que en vez de moverse, estén girando.

En vertical puede que sea dificil hacer que se note mucho, por la forma de los ojos. En horizontal puedes explotar más el efecto.

AikonCWD

Correcto, solo giran. Para hacer que se muevan tendría que meter una cascada de condiciones if e ir moviéndolos poco a poco.

No se me ocurre otra forma. De momento lo dejo así porque no quiero dedicar el día de hoy a los ojos.
Si me sobra tiempo me lío con ello.

3 6 respuestas
Kaos

#1474 Se sale

Vedrfolnir

#1474 mola mil

Kaos

#1474 Quedaría bien unas partículas ahí de humo (polvo) a tope saliendo del suelo

1 respuesta
puntocom

#1474 Para el movimiento en el eje horizontal supongo que podrías simplemente tomar la posición del jugador en ese eje y aplicarla a los ojos en una escala más pequeña, ¿no? ¿Tal vez usando Lerp?

1 respuesta
AikonCWD

#1478 Algo así, pero no puedo tomar la posición absoluta del player en pantalla, ya que la cabeza podría estar en una esquina y el player en el centro.
Debo utilizar la distancia relativa del player respecto la cabeza, y como bien dices aplicar una escala más pequeña.

Pero ahora estoy focus con los movimientos de ataque del jefe, ya haré eso más adelante.

#1477 Sí. Todo eso lo meteré al final. Por ejemplo ahora no hay corona del jefe, solo aparece una vez sube la cabeza.

1
n3krO

#1474 definde la distancia que se alejan los ojos en funcion del angulo: r = f(theta)

Una vez tienes el angulo (que es el que usas para girar los ojos), calculas el offset de los ojos como:

offset_x = r * cos(theta)
offset_y = r * sin(theta)

Y le sumas ese offset a la posicion de los ojos.

Para probar puedes definir un radio contsante de 10 pixeles por ejemplo y verias como los ojos siguen un circulo alrededor del punto central.

La funcion r = f(theta) puede ser una funcion por partes, solo tienes que asegurarte que tiene continuidad entre partes (que coinciden los valores por ambos lados).

4 1 respuesta
carra

#1480 Estaba a punto de escribir lo mismo con el seno y coseno, me has ahorrado el trabajo jaja.

Además, ya que los ojos son más bien horizontales, podrías hacer que en offset_x, por ejemplo, se use 2 * r y dar más movimiento en esa dirección.

1 respuesta
AikonCWD

Os dejo el tema que ha hecho @Shote para el boss:

https://aikoncwd.ovh/cursedgemboss07072020full.ogg

A mí me flipa muchísimo.
Primero empezaré a programar todos los movimientos, ataques y coreografías con el boss y luego Shote recortará el tema para hacer que cuadre más o menos con los timmings. Hay un momento inicial más pausado que servirá para la animación inicial del boss (cabeza subiendo desde el suelo al techo) Y luego el tema principal en loop.

Qué os parece?

Edit: Las voces me recuerdan al street fighter de la SNES

2 2 respuestas
Kaos

#1482 Vaya máquina. Se sale. No le faltará trabajo no? XD
Yo quitaría las voces.

B

#1482 Las voces están para mandarlas al carrer en cualquier momento son como las del street fighter pero son royalty free son originales del fl studio

n3krO

#1481 eso saldria un rombo. Para que saliera una elipse una opcion seria por ejemplo:

r = 5 + 5 * (cos(theta))^2
1 respuesta
B

#1471 usa un path que se adapte al interior de la cuenca del ojo y mueve el ojo al punto del path más cercano al player.

2 respuestas
n3krO

#1486 como determinas el punto del path mas cercano al player? Como defines el path? Como una nube de puntos? Da mas info :(

1 respuesta
B

#1487 he mirado la docu de Godot por encima y tiene implementado todo... debería ser algo así Path2D > Curve2D > get_closest_point()

Los "pasos" exactos en Godot los desconozco, nunca he tocado este engine. Aquí los "Godoteros" sabrían decir.

1 1 respuesta
AikonCWD

#1488 Justamente estoy usando Path2D para el movimiento de la cabeza y puños. Miraré de implementarlo para los ojos también.

1 respuesta
B

#1489 colleja te daba xD

2
AikonCWD

Esa línea azul es el Path2D, como podéis ver soy un crack dibujando con líneas Bézier xdddd
La cruz roja de la derecha es un PathFollow2D. Se mete dentro de la línea Path2D y puedo situar la cruz en cualquier posición de esa curva, siendo el inicio 0.0 y el final 1.0.

La verdad es que es super útil:

Con eso es muy fácil mover un objeto a través de esa curva. Haré una pequeña para los ojos a ver como queda. Pero como dije: cuando termine de hacer el boss primero.

2
AikonCWD

Madre mía pero qué divertido es programar estas cosas:

Imaginad la escena terminada, con su decoración, música épica de fondo, partículas y temblores de pantalla al impactar y arrastrar los puños, vibración del joypad, etc...

Quiero añadir un par o 3 de ataques más y empezar a pulir la escena para dejarla terminada. Los otros ataques serán el típico puño que busca la vertical con el player y tras un segundo baja de golpe. Y el puño empezando de un lateral de la pantalla, avanzando y dando pisotones.

9 3 respuestas
Kaos

#1492 No echaba fuego por la boca? Igual puedes aderezar el conjunto con algunas bolas de fuego random que salgan de su boca o del fondo. Por darle coherencia a lo de la boca

Kalgator

#1492 mola mucho, pero fijate que el pulgar de uno de los puños se solapa, podrías partir la imagen y que desapareciesen los pulgares al juntarse

carra

#1485 La elipse es un círculo estirado. Las ecuaciones son las mismas, sólo que el radio en X es distinto de en Y. De hecho hacer un rombo sería más complicado! Necesitarías puntos extremos en las esquinas, y haría falta usar abs() o if().

AikonCWD

Creo que quitaré la colisión con la cara. Si no es muy fácil trepar por un lateral de la cara hasta la gema.

Tampoco tengo claro lo del fuego de la boca. Si meto un sprite estático, queda mal cuando se mueve la cabeza.
Si quiero que el fuego tenga físicas, lo suyo es usar partículas, pero éstas no tienen detección de colisiones (creo).

Hummmmm, seguiré pensando

totespare

#1474 puedes hacer que se muevan ambas cosas sin cascada de ifs. Que el iris siga al player y la pupila lo siga tambien, pero lo confinas dentro del iris y que no salga de ahí nunca, y con eso debería verse mas o menos realista yo creo. Como dice #1486 básicamente

1
SkullraiN

#1492

que pasada!!!

AikonCWD

Ostras!

Os acordáis del sistema de mensajes online, estilo darksouls? Pues la gente ya le está dando uso en la demo:

Secret Down. Try left, secret ahead

:heart_eyes:

5 1 respuesta
Kalgator

#1499 que demo? :(((

1 respuesta