Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Pejota

Páginas: 1 2 3 ... 6
1
Es que necesito hacerlo con draw_sprite (o cualquier draw), no me sirve "sprite_index"

Si el problema soy yo, que no te entiendo, te agradecería mucho un ejemplo  XD


2
Buenas!

Mi problema es el siguiente:
Si yo pongo en un objeto "draw_sprite(loquesea,-1,x,y)" con ese -1 para que me haga la animación del sprite y no me muestre un sprite estático, funciona, pero me empieza la animación desde donde le da la gana  :-[

Imagino que sucede debido a que otras funciones que tiene el objeto que dibuja el sprite, está alterando desde donde comenzar la animación de este draw.

¿Cómo hago para que la animación de ese draw siempre comience en el primer sprite?

Un saludo

3
Preguntas y respuestas / Mover Sprites
« en: Febrero 11, 2019, 12:31:41 pm »
Buenas!
El problema seguro que es una tontería, pero cuando te metes en algo que no has intentado hacer nunca...

Tengo a un mismo objeto dibujando varios sprites con el Evento DRAW, y ahora quiero que cuando una variable pase de 0 a 1, todos estos sprites se trasladen desde su ubicación a otra (es para sacarlos de la room por el lateral) ¿Cómo puedo hacer esto?

Un saludo


4
Ahh ya mas o menos entiendo, pues mejor seria que utilizaras el instance_create() para hacerlo, es mas comodo

Es que instance_create() sólo sirve para objetos, y quiero evitar estar creando un objeto para cada imagen, que seguro que sobrecarga innecesariamente la escena. De hecho, eso es lo que he estado haciendo hasta ahora porque no sé otra forma, pero quiero empezar a depurar lo que llevo.

5
Con el evento draw_sprite del objeto, lo colocas varias veces y en sus propiedades de X y Y cambias las coordenadas segun tu conveniencia

Pero eso sirve si simplemente quieres que un objeto esté dibujando todo el rato varias cosas; Pero en mi caso requieren de que sucedan ciertos requisitos primero. Entonces, lo que sucede es que cuando se cumple el primer requisito, se dibuja el sprite, OK... pero cuando se cumple el segundo requisito, de dibuja este nuevo sprite y se borra el anterior.

Código: [Seleccionar]
if global.roundsP1=1
{
draw_sprite(spr_hand,-1,34, 200);
}
if global.roundsP2=1
{
draw_sprite(spr_hand2,-1,1864, 200);
}

6
Buenas,

¡Pues eso! Imagino que debe ser sencillo, pero todo lo que pruebo borra el sprite anteriormente dibujado.
Me gustaría saber cual es el código correcto para que un mismo objeto dibuje varios sprites simultáneamente.

Un saludo

7
Preguntas y respuestas / Re:Alarma en relación a los FPS
« en: Noviembre 05, 2018, 03:49:38 pm »
Debes utilizar la variable fps.
fps_real indica la cantidad máxima de fps a la que puede correr el juego. Normalmente solo se alcanza con una room vacía.
No deberías hacer que la pantalla de carga tarde 5 segundos, podría ser desesperante para el jugador.
Para optimizar el juego utiliza el debugger o activa la barra de consumo de recursos: show_debug_overlay(true);Observa qué parte del juego consume más recursos y trata de optimizar esa parte.

Gracias por tu respuesta.

En todos los juegos de lucha hay una pequeña espera desde que se seleccionan los personajes hasta que empieza la partida, que se desespere quien quiera xD.

No tienen porque ser 5 segundos, iré probando, pero necesito tener una pantalla de carga que se vaya cuando el juego se estabiliza. Lo de intentar optimizarlo también lo haré, pero necesito una pantalla de carga que funcione de este modo. Es un juego de lucha y no puede empezar ni un segundo antes de que todo vaya estable.

8
Preguntas y respuestas / Alarma en relación a los FPS
« en: Octubre 29, 2018, 04:00:18 am »
Buenas.
Para crear una pantalla de carga que me asegure que no haya relentizaciones al empezar a jugar, quiero hacerla en base a los fps reales a los que esté corriendo el juego.

He pensado en una alarma que mientras el juego esté corriendo a 30fps, el temporizador comience la cuenta atras hasta pasar unos 5 segundos, y cuando pasen esos 5 segundos, se destruya el sprite de la pantalla de carga.

Si el juego no está corriendo a 30fps, el temporizador debería pausarse, y cuando vuelva a estar a 30fps continuar. Así se garantiza que la pantalla de carga no se eliminará hasta que lleve un rato el juego corriendo a 30 fps estables.

Lo he intentado tanto que ni siquiera sé si es posible...
He probado tanto con "fps=30" como con "fps_real=30", no sé cual es el bueno, si es que alguno de los dos sirve para esto.

Un saludo

9
Preguntas y respuestas / Re:¿Me ayudáis con esto?
« en: Octubre 28, 2018, 04:24:42 am »
Hola Pejota

En este caso Game Maker permite encadenar los "if" y "else" en una estructura infinita.
La estructura es la siguiente:
if (caso1) { código 1 }
else if (caso2) { código 2 }
else if (caso3) { código 3 }
else { el código cuando no ocurre ninguno de los 3 casos anteriores }

Para lo que necesitas, simplementa añade una cuarta condición indicando simplemente "else" y debería ejecutarse ese código para cuando no se cumple ninguno de los 3 casos anteriores.

Saludos

¡Sí! Ya estaba probando esto mientras contestabas y vi que funcionaba :)
¡Genial! Me salvas de días y días sin saber como arreglarlo. ¡Mil gracias!

10
Preguntas y respuestas / Re:¿Me ayudáis con esto?
« en: Octubre 28, 2018, 12:12:51 am »
Buenas Pejota

No sé para qué tantos brackets innecesarios, puedes simplificarlo todo si usas el "and" o "&&" que sirve para enlazar condiciones.
"if (condicion1 = true) and (condicion2 = true) { hace algo }"

Acá he simplificado tu código, que a apreciación mía estaba correcto:

Código: [Seleccionar]
with (RealTortero2) {

if (sprite_index = FSB) && (image_index = 8) {
action_sprite_set(BH0, 0, 1);
}
else if (sprite_index = SDBS) && (image_index = 12) {
action_sprite_set(BH, 0, 1);
}
else if (sprite_index = SBS) && (image_index = 12) {
action_sprite_set(BH, 0, 1);
}

}

Hay algunos casos donde el image_index funciona raro, te recomiendo hacer image_index = 0 cada vez que cambias de sprite para asegurarte que se cumpla la condición.

Saludos

¡Ah! Lo que me pasa es que soy un ilustrador con apenas conocimientos de programación xD

De todas formas te has confundido. Quiero que en esos 3 casos, sea siempre "BH0", y "BH" para el resto de animaciones que tiene "Realtortero2" (incluidas el resto de imagenes de esas mismas animaciones). Otras muchas animaciones que tiene el personaje y no he nombrado. Que creo y espero que no haga falta nombrarlas todas en el código. Imagino que bastará con algo así como "y cuando no se dan estos casos = BH"

¡¡Muchas gracias!! Puede que igualmente ya sea capaz de sacar lo que busco por mi cuenta con la clase de programación que me has dado xD

11
Preguntas y respuestas / ¿Me ayudáis con esto? [Solucionado]
« en: Octubre 27, 2018, 03:52:47 am »
Buenas,
Os quería comentar mi problema a ver si podemos resolverlo entre todos.
Tengo un objeto, que es un Hitbox, al cual le he dicho que cuando colisione con un Hurtbox, un tercer objeto "RealTortero2" cambie de sprite.
Esto fue fácil, en el evento de acción colisión con el hurtbox puse:

Código: [Seleccionar]
with (RealTortero2) {
action_sprite_set(BH, 0, 1);
}

Pero ahora quiero que cuando Realtortero2 se encuentra en imágenes concretas de sprite concretos, en vez de cambiar a "BH", cambie a "BH0". Esto es lo que me está causando dificultades.

Estos 3 momentos son:
-sprite_index=FSB image_index=8
-sprite_index=SDBS image_index=12
-sprite_index=SBS image_index=12

He probado cosas como:
Código: [Seleccionar]
with (RealTortero2) {
if sprite_index=FSB
{
if image_index=8
{
with (RealTortero2){
action_sprite_set(BH0, 0, 1);
}
}
else
{
with (RealTortero2) {
action_sprite_set(BH, 0, 1);
}
}
}
else
{
with (RealTortero2) {
action_sprite_set(BH, 0, 1);
}
}
}

Y funciona, pero este es solo uno de los 3 momentos en los que quiero que ocurra, y si hago esto con los 3 de forma independiente al final deja de funcionar el "BH0" para siempre, y no sé programar lo suficiente como para poner ese último "else..." al final de los 3 casos como un mismo conjunto.

También he pensado que si lo hiciera con una variable sería más fácil, pero me he visto en la misma dificultad, porque lo que no sé realizar, es una correcta utilización del "else" cuando son varios casos a tener en cuenta y no sólo uno.

Resumo el objetivo para quién se haya liado xD

Hay que conseguir que cuando el hitbox y el hurtbox colisionen, "RealTortero2" cambie su sprite a "BH", menos cuando "RealTortero2" se encuentre en estos momentos de estas animaciones:

-sprite_index=FSB image_index=8
-sprite_index=SDBS image_index=12
-sprite_index=SBS image_index=12

En estos casos, en vez de cambiar a "BH", tendrá que cambiar a "BH0"

Un saludo y gracias por vuestro tiempo

12
coño que buena pinta tiene, has hecho tu los sprites ?

Gracias! Sí. Photoshop, DragonBones (es como Spine, pero gratuito) y muchas ganas  :P

13
Preguntas y respuestas / Re:Detener una animación realizada con "draw"
« en: Octubre 20, 2018, 04:23:49 pm »
En ese caso es mejor controlar la animación con una variable a parte.

Create Event
Código: [Seleccionar]
anim = 0
Step Event
Código: [Seleccionar]
if global.vida=0 && anim < 6 {
anim += 1
}

Draw Event
Código: [Seleccionar]
if global.vida=0 {
draw_sprite(spr_KO,anim,960,540);
}

Saludos

Funcionó! Muchas gracias :)

14
Preguntas y respuestas / Re:Detener una animación realizada con "draw"
« en: Octubre 20, 2018, 03:09:11 pm »
Hola Pejota

Si estás dibujando el sprite con "sprite_index", tienes que detener la variable que usas para dibujar la subimagen.
Si dibujas la subimagen con valor "-1" o "image_index", basta con hacer image_speed=0 y detienes la animación.

Saludos

Buenas BssString.

Ya probé algo así y no me funcionó.

No lo he creado con sprite_index, lo he creado en el evento Draw con "draw_sprite" dentro de un objeto CONTROL de esta manera:

if global.vida=0;
{
draw_sprite(spr_KO,-1000,960,540);
}

y ahora busco que cuando llegue al frame 6, se detenga en él.

15
Buenas,
Tengo una pregunta muy sencilla, pero que yo como persona que no sabe programar no pude resolver.

Para que una animación no se repita una y otra vez, y se detenga, por ejemplo, en el último sprite, nos vamos al evento End Animation y le decimos algo así como:

if sprite_index= spr_KO{
image_index=6
}

¿Pero si lo que quieres detener no es el sprite principal del objeto y simplemente es un "draw_sprite"?

Un saludo


Páginas: 1 2 3 ... 6