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

Páginas: 1 2 3 ... 19
1
Preguntas y respuestas / Re:variable global
« en: Marzo 15, 2019, 08:47:10 pm »
Puedes utilizar las funciones variable_global_exists(nombre) para saber si existe, variable_global_get(nombre) para obtener su valor y variable_global_set(nombre, valor) para colocarle un valor.

Saludos

2
Juegos completos / Re:[CGMGameJam] La Bruja de los colores
« en: Enero 21, 2019, 06:19:18 pm »
Mi favorito del jam al menos, hay algunas mecánicas que no entendí bien pero si le veo demasiado potencial si lo sigues puliendo. Ojala y algún día lo continúes.

Saludos

3
Juegos completos / Re:Space color [CGMGameJam]
« en: Enero 21, 2019, 06:16:08 pm »
Me ha gustado el esfuerzo que le metiste a la complementación de menus, texto y los otros detalles menores, pero del juego si no sabría mucho nuevo que decir frente a lo que ya han comentado anteriormente. Es igualmente un buen esfuerzo dado el tiempo del jam

4
si, se puede con el keyword "with"

with (all) {
    // Aquí pones el código
}

5
CGM Game Jam / Re:CGM Game Jam Edicion 1
« en: Enero 06, 2019, 03:34:38 am »
super, cuenten con mi participación  8)

6
Puedes almacenar la surface en un sprite, este se conserva durante todo el juego (no olvides borrarlo cuando no lo necesites)

https://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sprites/sprite_create_from_surface.html

7
Juegos en desarrollo / Re:Gun.smoke fangame
« en: Diciembre 30, 2018, 03:55:37 am »
Ok, creo que tiene que ver con que lo pusiste en server en especifico, si abro la comunidad desde una pestaña de incognito no puedo ver tus imagenes.

8
Juegos en desarrollo / Re:Gun.smoke fangame
« en: Diciembre 30, 2018, 02:33:20 am »
Las imágenes si se ven normal, son 3... el juego esta muy bien hecho, siempre me gustó mucho guns.smoke, en cuestión de programación veo que lo has replicado bastante bien, cada enemigo se comporta como debería y el jefe también fue interesante.

Como tal no vi errores en el juego así que de resto queda ver que tan bien avanzas el proyecto.

muchos ánimos

9
Preguntas y respuestas / Re:Problema en colisión con la nada
« en: Diciembre 29, 2018, 06:17:52 pm »
Esto sucede porque necesitas re ubicar a tu personaje una vez detecte que va a estar por fuera del área.

Por decir algo, si tu jugador ya estaba a medio traspasar el área y simplemente le dices que deje de caer, pues el se va a quedar ahí donde estaba...

Para solucionarlo no sabría como decirte específicamente ya que no se como es el objeto del área como tal, pero la solución se vería algo así (Te dejo los cambios documentados):

if(!place_meeting(x,y+19,obj_area)){
    gravity=0;
    vspeed=0;
    gravity_direction=270;

    // Aquí debes re ubicar al personaje, esto depende de tu juego
    y = bordeInferiorDelArea - offsetDelTamanoDelPersonaje;
}else{
    gravity=2;
}

if(!place_meeting(x,y-19,obj_area)){
    vspeed=0;

    // Aquí debes re ubicar al personaje, esto depende de tu juego
    y = borderSuperiorDelArea + offsetDelTamanoDelPersonaje;
}
   
if(keyboard_check(vk_left)) {
    if(place_meeting(x-19,y,obj_area)) {
        hspeed=-3
    } else {
        hspeed=0;
    }
}

if(keyboard_check(vk_right)){
    if(place_meeting(x+19,y,obj_area)) {
        hspeed=3
    }else{
        hspeed=0;
    }  
}

if(keyboard_check_pressed(vk_up) and vspeed=0){
    vspeed=-20;
}
   
if(keyboard_check_released(vk_up)){vspeed=vspeed/2;}
if(keyboard_check_released(vk_left)){hspeed=0;}
if(keyboard_check_released(vk_right)){hspeed=0;}

No te va a funcionar así obviamente porque depende de la posición del area y también del tamaño del jugador y su punto de rotación, entre otros...

Pero esa es básicamente la solución

Saludos

10
Preguntas y respuestas / Re:Error visual con distance_to_object
« en: Diciembre 29, 2018, 06:08:08 pm »
Si tuviera que adivinar tiene que ver con tus condiciones en el if/else:

Supongamos que la posición del enemigo es enemigo.x+7.
por lo tanto la condición if enemigo.x+5 < x se cumple.
así que el enemigo se mueve x -= 2.5; y su nueva posición es enemigo.x+4.5

ahora en el próximo frame, se prueba de nuevo la condición:

if enemigo.x+5 < x? no, en este caso x  = enemigo.x+4.5
por lo tanto entra en la condición del else
así que el enemigo se mueve x += 2.5; y su nueva posición es enemigo.x+7 nuevamente,

En el próximo frame vuelve a moverse a 4.5, luego a 7 y así, ese es el efecto que te esta sucediendo.

Este es tu problema, para solucionarlo de forma rápida podrías probar:

if distance_to_object(enemigo) < 400  and enemigo.image_alpha = 1
{
if enemigo.x+5 < x
{
    sprite_index = spr_enemigo_craneo_camin_izq
    x -= 2.5
    image_speed = 0.16
}
else if enemigo.x-5 > x // Esta linea de código es el cambio
{
    sprite_index = spr_enemigo_craneo_camin_der
    x += 2.5
    image_speed = 0.16
}
}

Saludos

11
Preguntas y respuestas / Re:[3D] Fusionar primitivas dibujadas por alpha
« en: Diciembre 25, 2018, 05:47:33 pm »
No estoy seguro si te entendí bien, pero por lo que suena, podrías utilizar esta función antes de dibujar esos sprites:

draw_set_blend_mode_ext (https://docs.yoyogames.com/source/dadiospice/002_reference/drawing/colour%20and%20blending/draw_set_blend_mode_ext.html)

lo que hace esa función es decirle al renderer que hacer con los 2 pixeles actuales (el que estas a punto de dibujar y el que ya esta dibujado) decirte cual te puede servir es un poco dificil, (yo diría tal ves: draw_set_blend_mode_ext(bm_src_alpha, bm_zero)). pero en la página del manual están todas las combinaciones posibles, dale una mirada.

Saludos.

12
Preguntas y respuestas / Re:bala multi objetivos que sigue a enemigos
« en: Diciembre 23, 2018, 06:41:29 am »
Puedes obtener la instancia mas cerca utilizando la funcion instance_nearest(x, y, obj) luego le asignas esa instancia a la bala que creas para que esta solo siga a ese enemigo:

Esto lo pondrías cuando crees la bala:

//Primero obtenemos la posición del enemigo mas cercano
var enemigo = instance_nearest(x, y, objEnemigo);

//Ahora creamos la bala
var bala = instance_create(x, y, objBala);

//Le decimos a la bala a que enemigo debe seguir
bala.enemigoObjetivo = enemigo;

Ahora en el objeto de la bala, en el evento step, depende de como tengas el sistema de movimiento esto puede cambiar. Yo lo voy a mover utilizando un método facil

//Necesitas una velocidad para la bala
var velocidad = 3;

//Obtenemos la dirección hacia el enemigo
direction = point_direction(x, y, enemigoObjetivo.x, enemigoObjetivo.y);

//Ahora movemos la bala en esa direccion con una velocidad
x += lengthdir_x(velocidad, direction);
y += lengthdir_y(velocidad, direction);

Esto debería funcionar, al menos de forma básica, ya a partir de esto puedes adaptarlo a tus necesidades.

Saludos

13
No entiendo muy bien lo que estoy viendo, pero por defecto las camaras 3d tienen 2 planos de corte: cuando los pixeles están muy próximos a la cámara y cuando están muy alejados, llamados znear y zfar respectivamente:



Solamente los objetos que estén entre ambos planos (el view frustum) se van a dibujar.

Para remediar un poco tu problema, puedes tratar de haciendo el znear mas pequeño (por defecto es igual a 1) pero debe ser mayor a 0.

Esto se hace en la función que setea la proyección de la cámara, utiliza d3d_set_projection_ext para definir los valores de znear y zfar, en la documentación puedes ver un poco mas de info:

https://docs.yoyogames.com/source/dadiospice/002_reference/drawing/drawing%203d/3d%20projections/d3d_set_projection_ext.html

Pero sería algo como esto:

d3d_set_projection_ext(xfrom, yfrom, zfrom, xto, yto, zto, 0, 0, 1, 60, room_width/room_height, 0.1, 16000);

Saludos

14
Preguntas y respuestas / Re:Shaders- negativo y distorcion de sprite
« en: Diciembre 21, 2018, 07:49:16 pm »
Hola, no puedo escribirte un shader y que lo puedas utilizar porque la verdad es un efecto complejo que requiere de temas específicos de tu juego, sin embargo el modo en el  que funcionaría es el siguiente:

Dices que los objetos deben quedar de color negativo cuando están detrás de un circulo. Los pasos entonces serían los siguientes:

Primero: Dibuja el circulo en un surface

Segundo: Crea un shader y dibuja los objetos a ser afectados por el utilizándolo
    * Este shader recibirá no solamente el objeto a dibujar sino también el circulo que dibujaste en la surface
    * En el fragment shader debes detectar si el pixel que estas dibujando esta dentro del pixel del circulo ya dibujado
    * Si es así, inviertes los colores haciendo algo como
            colorInvertido = vec4(1.0, 1.0, 1.0, 1.0) - elColorDelPixelNormal;

hasta es punto es relativamente sencillo, si bien no te puedo copiar un shader ahora mismo, hace unos años hice un video tutorial sobre como dibujar la siueta de personajes detras de otros objetos, es básicamente la misma teoría solo que en vez de dibujar el color de la silueta dibujas el color invertido, este es el video:

https://www.youtube.com/watch?v=uMDteIbgY64

Saludos

15
por lo que entiendo, este es tu script para generar una serie de obstaculos:

instance_create(room_width+(8*32) , 692 , obj_box); // obstáculo
instance_create(room_width+(8*32) , 618 , obj_box);
instance_create(room_width+(12*32) , 525 , obj_coin); // moneda
instance_create(room_width+(20*32) , 525 , obj_box);
instance_create(room_width+(20*32) , 618 , obj_coin);

ahí es donde debes decirle en que carril estan:

var obstaculo;

obstaculo = instance_create(room_width+(8*32) , 692 , obj_box); // obstáculo
obstaculo.carril = 3; //por decir algo

obstaculo = instance_create(room_width+(8*32) , 618 , obj_box);
obstaculo.carril = 2;

instance_create(room_width+(12*32) , 525 , obj_coin); // moneda

obstaculo = instance_create(room_width+(20*32) , 525 , obj_box);
obstaculo.carril = 1;

instance_create(room_width+(20*32) , 618 , obj_coin);

Si el jugador inicia en el medio por ejemplo, entonces en el evento create puedes poner que esta en el carril 2

carril = 2;

Y luego cuando presiones arriba para cambiar de carril, le restas 1 y cuando baje de carril le sumas 1

Páginas: 1 2 3 ... 19