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

Páginas: 1 2 3
1
Preguntas y respuestas / Re:Sumar inputs del teclado
« en: Marzo 01, 2019, 06:58:01 am »
Hola cristopher2545! Le podés aplicar álgebra booleana.

Lo que querés hacer es lo que haría la puerta lógica "AND". En álgebra booleana esto se expresa de esta forma:
Con dos valores:
A * B = B * A
O con tres valores
(A * B) *C = A * (B * C) = A * B * C

Aplicándolo a lo que querés hacer vos quedaría así:
//Las teclas las definís vos según tu necesidad
var tecla_a = keyboard_check(tecla);
var tecla_b = keyboard_check(tecla);
var tecla_c = keyboard_check(tecla);

//Primer caso (TECLA A + TECLA B = salto)
if (tecla_a * tecla_b){
    //Ejecutar un script de salto
    salto();
}

//Segundo caso (TECLA A + TECLA B + TECLA C = sprintar)
if (tecla_a * tecla_b * tecla_c){
    //Ejecutar un script de sprint
    sprint();
}

Lo que sucede es que, al presionar las teclas, las variables se actualizan a 1. Y al soltar, a 0.
Suponé que estás presionando las teclas "a" y "b":
if (tecla_a * tecla_b *tecla_c) {...}
//Es igual que:
if (1 * 1 * 0) {...} //1 * 1 * 0 = 0, que es false
Se tiene que presionar las 3 teclas al mismo tiempo para que ese evento se ejecute.

Te recomiendo que leas información sobre álgebra booleana. Este tema aplicado a la programación es muy útil.
Los siguientes usuarios dieron las gracias a este tema: Johann, cristopher2545

2
Hola florgm! Podés hacer que detecte cuando el personaje está encima del bloque y que luego se destruya con una alarma. Por ejemplo:
OBJETO BLOQUE: EVENTO CREATE
puede_romperse = true; //Si puede romperse o no
EVENTO STEP
if (place_meeting(x,y-1,obj_personaje) && puede_romperse = true){
    alarm[0] = room_speed * 1; //1 segundo hasta que se rompa
    puede_romperse = false; //Hacer que este evento no vuelva a suceder
}
EVENTO ALARM 0
instance_destroy();

Te dejo el proyecto donde hice la prueba por si querés hecharle un vistazo.
Los siguientes usuarios dieron las gracias a este tema: florgm

3
Preguntas y respuestas / Re:mouse
« en: Noviembre 24, 2018, 02:28:54 am »
Lo que pasa es que está detectando el clic, no el clic en el objeto. Podés ocupar el evento "mouse left pressed" para detectar un clic en el objeto, o el evento "mouse global left pressed" para cuando hace un clic en cualquier parte.
Los siguientes usuarios dieron las gracias a este tema: dixon2010, GGrayonar

4
Preguntas y respuestas / Re:Problema con hp del enemigo
« en: Noviembre 17, 2018, 06:27:16 am »
Hola Kain88! Creo que eso puede estar sucediendo porque usas obj_enemigo.hp, en lugar de la id del objeto. Deberías usar algo como other.hp, si el código está dentro del evento collision.
Al usar el nombre del objeto te estás refiriendo a todos esos objetos de la room. Para interactuar con cada objeto por separado necesitas su id.
Los siguientes usuarios dieron las gracias a este tema: Kain88

5
Preguntas y respuestas / Re:Crear detonadores y Explosivos
« en: Noviembre 08, 2018, 01:23:26 am »
Hola HKaichim! Yo hice algo parecido, pero con palancas y puertas. Te dejo el código de los objetos por si te sirve:
PALANCA
CREATE
//Imágenes
image_index = 0;
image_speed = 0;
depth = -y-24;

//Variables
state = false; //Estado. true = activada; false = no activada.
change_state = false; //Al estar true, cambia de estado y pasa a false.

//Este objeto tiene una variable en el create_event de la room.
//Esa variable define a qué objetos está "anclado" este objeto.

STEP
//Si cambia de estado
if (change_state){
    //Cambiar de estado
    if (state == true) {state = false; image_index = 0;}
    else {state = true; image_index = 1;}
   
    //Que no cambie más de estado la palanca
    change_state = false;
   
    //Cambiar de estado a los demás objetos de la index
    for (i=0;i<10;i++) {
        var obj = global.puzzle_index[index,i];
        if (obj > 0) {
            obj.change_state = true;
        }
        else {exit;}
    }
}

CREATION CODE (clic derecho en el objeto en el room editor)
index = 0;

PUERTA
CREATE
image_index = 0;
image_speed = 0;

//Cambiar de estado
change_state = false;

//Si está abierta
opened = false;

STEP
if (change_state) {
    //Hacer que no vuelva a cambiar de estado
    change_state = false;
   
    //Si el index de imagen es mayor a 0 o la velocidad de la animación es mayor a 0...
    if (image_index > 0 && image_speed >= 0) {image_speed = -0.3; opened = false;}
    else {image_speed = 0.3; opened = true;}
}

ANIMATION END
///Detener la animación en el primer y último frame
//Si está abierta, dejar el frame de abierto
if (opened) {image_index = 14;}
//Si está cerrado, dejar el frame de cerrado
else {image_index = 0;}

//Sin más animación
image_speed = 0;

CREATION CODE
//global.puzzle_index[id de index, id de objeto]
global.puzzle_index[0,0] = id;

Es obvio que algunas cosas de este código te sirven y y otras no, así que fijate. Esto lo hice en el GM:S1 hace ya un tiempo, así que no sabría cómo explicártelo bien :-[ Pero básicamente necesitas una array 2D global (en mi caso global.puzzle_index[x,y]) que almacena la informacion de qué palanca afecta a qué puerta.



Lo que hace es que cuando una palanca de valor x es activada, va a cambiar de estado a todas las puertas que estén en el valor de y. Por ejemplo, la palanca 0 se activa y activa a todas las id de puerta que estén en [0,y]. No sé si me explico muy bien.
Espero que te sirva. Te dejo adjunto el gmk de GM:S1.
Los siguientes usuarios dieron las gracias a este tema: Yuzo, HKaichim

6
Preguntas y respuestas / Re:Como dar terror en un juego 2D!
« en: Noviembre 03, 2018, 09:15:06 pm »
Hola Goganpis! Personalmente, los screamers u otro tipos de sustos no me gusta darles una categoría de "terror" porque son sólo sustos. El terror es algo que se debe sentir constantemente, un miedo a no saber lo que va a suceder, no saber qué hay detras de la esquina, no querer darte la vuelta para ver si está atrás el enemigo que te persigue.
Dicho esto, podemos decir que el miedo surge al no tener información o al enfrentarse a una entidad peligrosa, o al menos es la fuente más común en los videojuegos. Otra cosa que puede ayudar es una ambientacion tenebrosa (pocas luces, manchas de sangre por el camino que se debe recorrer, puertas destruídas por las que atravesar, etc...), hacer pequeños "screamers", como mover una caja aunque nada la toque, sin la intención de asustar, sino de sobresaltar al jugador y ponerlo en un estado de alerta.
Creo que estas son las cosas más comunes de los videojuegos, y no sé qué mas decirte porque no estoy muy adentrado en este tema :-[. Te dejo unos juegos de ejemplo que creo que pueden darte una buena referencia:

NEVERENDING NIGHTMARES
WIKIPEDIA
STEAM

DETENTION
WIKIPEDIA
STEAM
Los siguientes usuarios dieron las gracias a este tema: Yuzo, Goganpis

7
Preguntas y respuestas / Re:Detener una variable
« en: Octubre 24, 2018, 02:58:19 am »
Podes usar una variable más, por ejemplo:
if (variable) {i++;}
Este código detecta cuando la variable es cierta y le agrega 1 a la variable i. Cuando no sea cierta, no hace nada.
Los siguientes usuarios dieron las gracias a este tema: Yuzo, HKaichim

8
Hola gente! Tengo una duda con el tema de las resoluciones. Quiero hacer que en el menú de opciones los jugadores puedan elegir la resolución que quieran usar para que se ajuste mejor a sus pantallas o gustos, pero que la calidad gráfica no empeore o que no disminuya mucho al cambiar entre una resolucion alta a una más baja. Ejemplo, estoy haciendo el juego en una pc con un monitor de 1440x900 y quiero que al cambiar la resolucion en una de 1024x600 se adapte bien.

Estuve viendo algunos posts anteriores, pero antes de implementarlo a mi juego quiero saber bien sobre el tema. Gracias de antemano.
http://www.comunidadgm.org/preguntas-y-respuestas/resolucion/msg105734/#msg105734
http://www.comunidadgm.org/preguntas-y-respuestas/dejar-que-el-usuario-elija-resolucion-de-pantalla-para-el-juego-(solucionado)/msg78075/#msg78075
Los siguientes usuarios dieron las gracias a este tema: dixon2010

9
En el evento DRAW, el código que pongas ahí va a dibujarse según las coordenadas de la room. Por ejemplo:
draw_text(32,32,"Hola");
Este texto va a ser dibujado en las coordenadas x = 32, y = 32.

En el DRAW GUI el código se dibuja en las coordenadas de la cámara + las coordenadas especificadas. Por ejemplo:
La coordenada y de la view es 360 y de la x es 400, por dar números.
draw_text(32,32,"Hola");
Este texto va a ser dibujado en las coordenadas x = 400 + 32 = 432, y = 360 + 32 = 392.
Los siguientes usuarios dieron las gracias a este tema: Yuzo

10
Preguntas y respuestas / Re:Crear efecto de dia, tarde y noche
« en: Octubre 02, 2018, 05:25:34 pm »
Hola HKaichim! Si lo que querés hacer es un efecto de "sombra nocturna", como que se oscurece el entorno, podés intentar dibujar un rectángulo en las coordenadas de la cámara y que tenga un alpha:
DRAW GUI
draw_rectangle(0,0,view_wview[0],view_hview[0]);

En el valor de alpha podés hacer algo como esto:
//En el momento en que sepas que comienza el atardecer...
if (tiempo == atardecer){
    //Poner alpha
    tiempo_alpha++;
    draw_set_alpha(tiempo_alpha * 0.01);
}
Esto va a hacer que a cada step se le añada 1 a la variable y luego se le multiplique por 0.01 para reducir su valor en el alpha, ya que tiene un rango 0-1 (0 no se ve el rectángulo, 1 se ve completamente el rectángulo). Estos valores modificalos a tu gusto o necesidad.
Los siguientes usuarios dieron las gracias a este tema: Yuzo, HKaichim

11
Preguntas y respuestas / Re:Agregar numeros a string
« en: Octubre 02, 2018, 01:25:17 am »
Hola Ares074! Podés probar a añadir al mismo texto el valor que necesites, así:
str_code = str_code + string([el valor])

Por ejemplo:
if (keyboard_check_pressed(vk_up)){
    str_code = str_code + string(1);
}
else if (keyboard_check_pressed(vk_left)){
    str_code = str_code + string(2);
}
etc...
Los siguientes usuarios dieron las gracias a este tema: Yuzo, Ares074

12
Preguntas y respuestas / Re:cambiar la vista del sprite con el cursor
« en: Septiembre 23, 2018, 06:37:30 am »
claro el me gire cree sus dos sprite uno mirando a la derecha y otro a la izquiera pero tengo otro sprite de movimiento que es cuando corre pero este no se activa o no se como agregarlo

Podés poner if y detectar cuándo se mueve y cuándo no. No sé de qué forma estás haciendo el movimiento de tu personaje, pero yo pongo el ejemplo con hspeed y luego vos lo adaptas a tu código.

//Sí se mueve
if (hspeed != 0) {
    if (mouse_x < x) {
        sprite_index = [Sprite izquierda movindose];
        image_speed = 0.3;
    }
    else {
        sprite_index = [Sprite derecha movindose];
        image_speed = 0.3;
    }
}
//Si no se mueve
else {
    if (mouse_x < x) {
        sprite_index = [Sprite izquierda quieto];
    }
    else {
        sprite_index = [Sprite derecha quieto];
    }
}
Los siguientes usuarios dieron las gracias a este tema: Yuzo, beowulf260

13
Preguntas y respuestas / Re:cambiar la vista del sprite con el cursor
« en: Septiembre 23, 2018, 05:23:17 am »
Lo que querés hacer es que cambie la imagen del personaje, entonces lo más fácil es cambiar su sprite.
Tenes que tener dos sprites, uno donde mire a la izquierda y otro a la derecha, y eso reemplazar en el código.

//Izquierda
if (mouse_x < x) {
    sprite_index = spr_personaje_izquierda;
    image_speed = 0.3;
}
//Derecha
else {
    sprite_index = spr_personaje_derecha;
    image_speed = 0.3;
}

Fijate si alguna parte de tu código hace conflicto con este.
Los siguientes usuarios dieron las gracias a este tema: Yuzo, beowulf260

14
Preguntas y respuestas / Re:cambiar la vista del sprite con el cursor
« en: Septiembre 23, 2018, 05:08:30 am »
Podés probar a poner la velocidad de la animacion dentro de las llaves.

//Izquierda
if (mouse_x < x) {
    sprite_index = [el sprite de la izquierda];
    image_speed = [la velocidad de la animacion];
}
//Derecha
else {
    sprite_index = [el sprite de la derecha];
    image_speed = [la velocidad de la animacion];
}
Los siguientes usuarios dieron las gracias a este tema: Yuzo, beowulf260

15
Preguntas y respuestas / Re:cambiar la vista del sprite con el cursor
« en: Septiembre 23, 2018, 04:49:35 am »
Hola beowulf260! Podés probar esto.

Desde el evento STEP de tu personaje:
//Izquierda
if (mouse_x < x) {sprite_index = [el sprite de la izquierda];}
//Derecha
else {sprite_index = [el sprite de la derecha];}
Los siguientes usuarios dieron las gracias a este tema: Yuzo, beowulf260

Páginas: 1 2 3