Noticias

¡Ayuda a la Comunidad GM, haz una donación!

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 - Ikaro3d

Páginas: 1 2 3 4
1
Preguntas y respuestas / Re:función lerp +image_angle(solucionado)
« en: Junio 07, 2020, 09:53:16 pm »
cortesía de DarkRaziel

nuevo script:
///tendera_ang(valor,objetivo,incremento)

if argument2 == 0
    return argument1;
argument0 -= argument2*sign( angle_difference(argument0,argument1) );
if abs( angle_difference(argument0,argument1) ) < argument2
    argument0 = argument1;

return (argument0%360 + 360)%360;

uso:
image_angle = tendera_ang(image_angle,grados,0.3);
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

2
Preguntas y respuestas / Re:escalar texto
« en: Junio 05, 2020, 02:07:41 am »
Mm, Puedes Intentar Esto:

draw_set_font(fon_menu);

if cambiar = 1 {
jugar= draw_text_transformed(305, 305, "Jugar" ,es_x * 2,es_y * 2,0);
}else{
jugar= draw_text_transformed(305,305,"Jugar",es_x,es_y,0);
}

obciones=draw_text_transformed(305, 505, "Opciones",es_x,es_y,0 );

creditos=draw_text_transformed(305, 705, "Creditos",es_x,es_y,0 );

salir=   draw_text_transformed(305, 905, "Salir" ,es_x,es_y,0);

Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

3
Preguntas y respuestas / Re:destruir instancias (solucionado)
« en: Junio 01, 2020, 05:39:40 am »
Que bueno que te ha servido.

other se utiliza dentro de un ciclo with para indicar la instancia que inició el ciclo.
// el objA tiene este código
foo = 0; // variable en instancia de objA

with (objB) // recorrer todas las instancias de objB
{
    foo = 123; // asignar variable a instancia de objB
    other.foo = 123; //asignar variable a instancia de objA
}

other también se utiliza en el evento colisión para obtener el id de la instancia con la que ocurrió la colisión.
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

4
Preguntas y respuestas / Re:destruir instancias (solucionado)
« en: Mayo 31, 2020, 05:09:10 pm »
El problema es que al usar with el código se ejecuta en todas las instancias.
Guarda el id de las rocas para leer sus variables directamente
// guardar ids
r1 = instance_create_layer(x + 0, y + 0, "Instances", roca1);
r2 = instance_create_layer(x + 0, y + 1150, "Instances", roca2);

hspeed = -1;
audio_play_sound(sonido_laser, 0, 0);
image_xscale =random_range(1,1.3)

// step
if(r1.image_index == 0 and r2.image_index == 0) {
    instance_destroy();
}
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

5
Preguntas y respuestas / Re:tras un impacto de color
« en: Mayo 15, 2020, 04:58:59 pm »
Con image_blend sólo se puede cambiar al color puro especificado si el sprite es de color blanco.

En caso contrario y de no querer duplicar el sprite a otros colores, la única manera es usando shaders, cosa que es un tema muy complejo.
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

6
Preguntas y respuestas / Re:tras un impacto de color
« en: Mayo 15, 2020, 04:43:02 pm »
Tendrás que aclarar algo más el código sobre que quieres hacer.
Para empezar, hace falta ver el sprite del enemigo.
Digamos que un sprite tiene un pixel que es azul puro, y el sprite tiene image_blend=c_red.
Pues ese pixel se quedara negro, pues no tiene nada de rojo.
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

7
Preguntas y respuestas / Re:escalar láser
« en: Mayo 11, 2020, 06:10:49 pm »
será que tal vez tienes el punto de rotación del sprite del láser centrado?
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

8
Preguntas y respuestas / Re:Imagen de fondo
« en: Mayo 05, 2020, 04:31:26 am »
Posiblemente la imagen es muy grande y no cabe en la página de textura. GameMaker la comprime automáticamente. Las soluciones son:
1. Usar una imagen más pequeña
2. Incrementar el tamaño de la página de textura
3. Dividir la imagen en varias partes.

Al compilar para Android se reduce el número de colores. Creo que se puede desactivar, pero no recuerdo.
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

9
Preguntas y respuestas / Re:Función lerp ,movimiento pad
« en: Abril 16, 2020, 03:48:47 am »
Hola Ikaro3d

Encuentro interesante tu idea de usar LERP para suavizar el movimiento, pero le veo un problema al código de teclado.
Específicamente a la condición: "if keyboard_key" del inicio... no le encuentro sentido, pienso que el código quedaría mejor si la borras.
Esa condición te hace frenar de golpe si sueltas todas las teclas y no dejas que el lerp complete la distancia.
Ejemplo: si vas todo a la derecha, te deberías mover a la derecha con el suavizado y todo perfect, pero si sueltas todas las teclas de golpe, el personaje frena de golpe, pero aún le falta recorrer un 85% de la distancia que el LERP del step anterior no lo hizo recorrer. Eso significa que si ahora pulso izquierda, el personaje primero avanzará ese 85% hacia la derecha y luego irá a la izquierda como era esperado.

Este código debería funcionar con el JoyPad. Va explicado con comentarios para que no te pierdas.

//Primero recibo en qué porcentaje muevo el Stick (regresa un valor entre -1 y 1).
//En algunos Joystick de mala calidad, el axis queda pulsado ligeramente, para evitar eso, cuando se mueve 0.1 o -0.1, lo interpreta como 0.
var hdir = gamepad_axis_value(0,gp_axislh); if abs(hdir) < 0.1 { hdir = 0 }
var vdir = gamepad_axis_value(0,gp_axislv); if abs(vdir) < 0.1 { vdir = 0 }

//En caso de haber movimiento en cualquiera de los dos ejes:
if hdir != 0 || vdir != 0 {
//Convierte la coordenada cuadrada del X/Y a una coordenada circular (para que no importa a cuál de los 360º se mueva el personaje, nunca supere la máxima velocidad "v", si no haces esto, en diagonal se movería más rápido)
hdir *= sqrt(1 - 0.5*vdir^2)
vdir *= sqrt(1 - 0.5*hdir^2)
//Esto simplemente ajusta el "x" target e "y" target tal como lo tienes en tu código para keyboard.
xx += v*hdir
yy += v*vdir
}
//Esto actualiza las coordenadas del personaje para moverse un 15% de la distancia que hay entre su coordenada actual y su coordenada objetivo.
x=lerp(x,xx,0.15)
y=lerp(y,yy,0.15)

Edit: Ojo que si pulsas derecha y al mismo tiempo mueves el Stick a la derecha, te moverás dos veces a la derecha (al doble de rápido). Deberías crear algún "if" que te haga moverte o con teclado o con joypad, pero no ambos a la vez

Saludos
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

10
Hola Ikaro3d

Intenta con:
image_angle = direction
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

11
Preguntas y respuestas / Re:time line + rutas
« en: Enero 06, 2020, 07:36:37 pm »
Hi, buenas tardes y buen provecho.

Ahora bien, voy a trabajar con suposiciones:

1. supongo que tienes varias rutas
2. supongo que quieres que el enemigo decida cual ruta elegir por si solo
3. supongo que el nemigo decide a donde ir
4. supongo que el enemigo se debe mover por si solo
5. supongo que las rutas son para el enemigo
6. supongo que cada enemigo debe elegir su ruta por si solo

Ya, dejaré de suponer. Ahora bien la pregunta que debistes formular es la siguiente:

¿como hago que el enemigo decida escoger una ruta?
¿como hago para que el enemigo camine por si solo y decida escoger una ruta de tres rutas distintas?
¿como hago para que el enemigo al ser creado decida una ruta cualquiera?

Bien...

Bajo esos datos construí esto:


Ahora tengo una babosa que camina para donde ella quiere y yo no tengo que decirle nada, ella solo toma su camino y toma otro camino y vuelve y toma otro , toma el que ella quiera. Yo nunca termino de saber cual será su próximo paso.

¿Cómo lo conseguí? pues...

con este único codigo en una alarma 0

Código: [Seleccionar]
ruta=1+floor(random(3))
alarm[0]=20

switch (ruta) {
   
        case 1:path_start(ruta_babosa_arriba, 15, path_action_stop, false);
       
        break;
       
        case 2:path_start(ruta_babosa_mitad, 15, path_action_stop, false);
       
        break;
       
       
        case 3:path_start(ruta_babosa_abajo, 15, path_action_stop, false);
       
        break;
       
    default:
       rutas=false
break;
}


Pero supongo que algo faltó, porque el objetivo no es que el objeto se mueva por si solo , al parecer lo que se quiere es usar el time line.... Yavá, un momento yavá.  dejame pensar....
Ya sé..... jejejejejjeje

Glosario:
  Yavá,  en Venezuela esta expresión significa "Dame unos instantes", "Espera un momento", "Dejame respirar", "Dejame hablar", "Dame unos minutos", etc...

SI, LO QUE Quieres es usar un time line para darle distintos movimientos en distintas situaciones entonces olvidamos el alarm[0] bueno no del todo porque vas a colocar un código en el alarm 0... Ya verás.

La solución sería:

1. Colocar tu código en la alarm[0] del enemigo
2. Constuir un time line de la siguiente forma
   En el tiempo 30 colocar una pieza de código con lo siguiente:
Código: [Seleccionar]
   ruta=1
  alarm[0]=1
  En el tiempo 120 colocar una pieza de código con lo siguiente:
Código: [Seleccionar]
  ruta=2
  alarm[0]=1
  En el tiempo 200 colocar una pieza de código con lo siguiente
Código: [Seleccionar]
ruta= 3
 alarm[0]=1


La función de alarm 0 será la de ejecutar el código que en ella se encuentra y eso es todo....... ave a aver avaer..... pues, ami me funcionó , ahora yo le digo a la babosa para donde tiene que ir y cuando se tiene que mover.
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

12
Preguntas y respuestas / Re:if - else?
« en: Enero 02, 2020, 11:56:37 pm »
Hola Ikaro3d

Según como lo veo yo, el código no funciona bien, no sé que habrá hecho el instructor, de hecho no tiene mucho sentido para mi que se escriba un "else" después de cada keyboard_check.

Para mi lo que tiene sentido es que se haga algo así:
Código: [Seleccionar]
if keyboard_check(izquierda) {
//Moverse a la izquierda
}
else if keyboard_check(derecha) {
//Moverse a la derecha
}
else {
//No moverse
}

PD: la palabra izquierda y derecha dentro del Keyboard Check es referencial, ahí pones la tecla que quieras comprobar

Saludos
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

13
Preguntas y respuestas / Re:if - else?
« en: Enero 02, 2020, 08:32:15 pm »
if (keyboard_check(ord("M"))) {
             
             if sprite_index!=spr_derecha
             sprite_index=spr_derecha
             x+=3
          }
          else {
            if sprite_index!=spr_frente
            sprite_index=spr_frente
          }
             
         
         
 if (keyboard_check(ord("N"))) {
             
             if sprite_index!=spr_izquierda
             sprite_index=spr_izquierda
             x-=3
          }
         
          else {
             if sprite_index!=spr_izquierda
            sprite_index=spr_izquierda
          }


lo que pasa es que se asignan los sprites en bucle, resete
andose la image_index a 0 en todo momento
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

14
Preguntas y respuestas / Re:Rutas
« en: Diciembre 01, 2019, 03:51:44 pm »
Hola, buenos días.

Si te refieres a movimientos de un enemigo  que se controla por una time line pues este es mi consejo entendible.

1. En create creas una variable llamada tiempo de tipo numerico (tiempo=0)
2. En create creas otra variable llamada ruta de tipo string (ruta="")
3. En step haces que tiempo se sume 1 por cada stem (tiempo+=1)
4. En step el tiempo debe volver a ser cero cuando llegue a un limite (if(tiempo>500){tiempo=0})
5. En step dices lo que sucederá en cada cierto tiempo (if(tiempo=50)ruta="arriba")
6. En step defines los movimientos por movimientos X y Y pero tambien puedes usar las variables vspeed y hspeed.

Ejemplo 1. Ejemplo más simple de un movimiento controlado
//[EVENTO CREATE¡
tiempo=0
ruta=""

//[EVENTO STEP]
//control del tiempo
tiempo+=1
if(tiempo>500){tiempo=0}
if(tiempo>50)ruta="arriba"
if(tiempo>150)ruta="derecha"
if(tiempo>250)ruta="abajo"
if(tiempo>350)ruta="izquierda"
if(tiempo>450)ruta="parar"

///movimiento
if(ruta="arriba"){y-=1}
if(ruta="derecha"){x+=1}
if(ruta="abajo"){y+=1}
if(ruta="izquierda"){x-=1}

EJEMPLO 2. Movimiento controlado con velocidad predefinida. EL OBJETO SALE DE LA ROOM SI LA VELOCIDAD ES MUY GRANDE

///EVENTO CREATE
tiempo=0
ruta=""
velocidad=5

///EVENTO STEP

tiempo+=1
if(tiempo>500){tiempo=0}
if(tiempo>50)ruta="arriba"
if(tiempo>150)ruta="derecha"
if(tiempo>250)ruta="abajo"
if(tiempo>350)ruta="izquierda"
if(tiempo>450)ruta="parar"

///movimiento
if(ruta="arriba"){y-=velocidad}
if(ruta="derecha"){x+=velocidad}
if(ruta="abajo"){y+=velocidad}
if(ruta="izquierda"){x-=velocidad}

EJEMPLO 3. Movimiento aleatorio. Este es el movimiento donde el objeto decide para donde ir.
///EVENTO CREATE
tiempo=0
ruta=""
velocidad=1
aleatorio=0

///EVENTO STEP
tiempo+=1
if(tiempo=10){aleatorio=floor(1+random(4))}
if(tiempo=50){aleatorio=0} ///AQUI DETENEMOS UNOS SEGUNDOS AL OBJETO
if(tiempo>75){tiempo=0}


if(aleatorio=1)ruta="arriba"
if(aleatorio=2)ruta="derecha"
if(aleatorio=3)ruta="abajo"
if(aleatorio=4)ruta="izquierda"
if(aleatorio=0)ruta="parar"

///movimiento
if(ruta="arriba"){y-=velocidad}
if(ruta="derecha"){x+=velocidad}
if(ruta="abajo"){y+=velocidad}
if(ruta="izquierda"){x-=velocidad}
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

15
Preguntas y respuestas / Re:extencions como funcionan?
« en: Octubre 21, 2019, 09:02:37 pm »
Hola,

Bueno, primero tienes que agregar la extension.
El siguiente video explica como importar y utilizar una extencion en game maker studio
Tambien puedes mirar el tutorial de nuestro camarada jucarave para importar extencion en otras versiones

Luego tienes que usar los códigos entregados por el autor:
Código: [Seleccionar]
obj_Hero.x += obj_LeftJoy.normalx

obj_Hero.y += obj_LeftJoy.normaly

obj_Hero.image_angle = obj_RightJoy.normaldir

Las exenciones agregan códigos a game maker, tienes que encontrar el código que dibuja el virtual joystick
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

Páginas: 1 2 3 4