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

Páginas: 1 2
1
Preguntas y respuestas / Re:Que medidas a pixel deberia usar?
« en: Mayo 27, 2019, 06:13:58 am »
pues mi personaje en un juego de plataformas es de 155 pixeles de alto por 70 de ancho y luce bastante bien tanto en fullscreen como en modo ventana no es muy grande pero tampoco no es pequeño lo suficiente para que se noten los detalles
Los siguientes usuarios dieron las gracias a este tema: Cocolisto

2
Preguntas y respuestas / Re:Arma de 3 disparos
« en: Mayo 27, 2019, 02:53:57 am »
puedes hacer una variable que cuente las balas que le queden a la pistola por ejemplo balas=3

y cada que presiones la tecla de disparo quitar una

if keyboard_check_pressed(tu tecla) && balas!=0
{
balas-=1
}

y para que tenga un cooldown podrias hacer una variable timer


if balas =0
{
timer+=1
}

if timer>80
{
balas=3
timer=0
}
Los siguientes usuarios dieron las gracias a este tema: playdro

3
puedes forzarla después que el dialogo termine no tengo un ejemplo de un sistema de dialogo pero podrías hacer que en la ultima linea de texto que conforme el dialogo entre personajes exista una variable que permita hacer una transición como por ejemplo dialogo_end=true

if dialogo_end=true //si el dialogo se acabo
{
lock=true / bloquea al personaje en su sitio
other.lock=true / bloqueas al enemigo en su lugar
instance_create(x,y,obj_tranmsicion) /creas una transición animada estilo rpg de antaño
}

en el animation end event de la animacion de transicion desactivas todo lo anterior

if sprite_index= spr_transition
{
dialogo_end=false
room_goto(combate_zone)
}

para hacer entrar en combate si el enemigo te toca podria ser algo como

if place_meeting(x,y,obj_malo)
{
lock=true / bloquea al personaje en su sitio
other.lock=true / bloqueas al enemigo en su lugar
instance_create(x,y,obj_tranmsicion) /creas una transición animada estilo rpg de antaño
}

if sprite_index= spr_transition
{
room_goto(combate_zone)
}
Los siguientes usuarios dieron las gracias a este tema: StarLord

4
Desarrollo de Scripts / One way platforms
« en: Mayo 23, 2019, 11:17:42 am »
Autor original: CRISTOPHER2545
Versión de GM utilizada:  :GM8: :GMS:
Descripción: este código añade las plataformas de un sentido o plataformas fantasma, las cuales puedes subir por debajo y bajar estando arriba si aprietas la tecla indicada, si solo deseas que funcione de un sentido puedes quitar la parte del código que indico abajo (el código es compatible con el de shaun spalding, el codigo también es compatible y funcional si la plataforma se mueve en horizontal).


Código:
evento CREATE de la plataforma
Código: [Seleccionar]
sprite_index= -1;
force=false // forza el cambio de mascara de la plataforma
down=false // desactiva la solides al apretar una tecla

evento STEP de la plataforma
Código: [Seleccionar]

mask_index = spr_platform

if force=true or down=true
{
mask_index=-1
}

// la variable onGround va en el personaje y es una variable para detectar si estas en el piso, si tu personaje no tiene una puedes usar esta que va en el evento step del jugador, no olvides declarar la variable en el create
if place_meeting(x,y-1,obj_wall)
{
onGround=true
}
else
onGround=false
///////////////////////////////////////


if !place_meeting(x,y-1,obj_player) && obj_player.onGround=false && obj_player.y>y
{
    force=true
    down=false  //remover si deseas solo subir a la plataforma
    }
    else
    {
    force=false
// remover si solo deseas subirte a la plataforma
    if keyboard_check(vk_down) 
    {
    down=true
    }
    }



evento DRAW de la plataforma

Código: [Seleccionar]

draw_sprite(spr_platform_M,0,x,y);


Los siguientes usuarios dieron las gracias a este tema: AgeX_005

5
Preguntas y respuestas / Re:movimiento para RPG con profundidad
« en: Marzo 03, 2019, 08:30:22 am »
tal vez  no pueda resolver tu pregunta pero intentare de resolver parte de ella, estas de suerte trabajo en un juego isometrico  y se un poco

puedes usar este código de movimiento y colisiones no es perfecto pero hace el trabajo (funciona si lo copias y pegas pero antes analiza para poder entender lo que sigue)

CREATE EVENT
Código: [Seleccionar]
h = 0;           // velocidad horizontal
      v = 0;           // velocidad vertical
      m = 1;           // multiplica la velocidad actual
      accel = 1        // aceleracion en el piso
      fric  = 0.5;     // friccion en el piso
      maxSpd = 2.1     // velocidad maxima

STEP EVENT
Código: [Seleccionar]
//[SISTEMA DE COLICIONES]
//--------------------------------------------------------------------------------//     

// VARIABLES TEMPORALES

    var i;

// VERTICAL

    for (i = 0; i < abs(v); ++i) {
    if (!place_meeting(x, y + sign(v),obj_parent_solid))
    y += sign(v);
    else {
    v = 0;
    break;
    }
    }

// HORIZONTAL

    for (i = 0; i < abs(h); ++i) {
    if (!place_meeting(x + sign(h), y, obj_parent_solid))
    x += sign(h);
    else {
    h = 0;
    break;
    }
    }
   
//[MOVIMIENTO (KEY INPUTS)]
//--------------------------------------------------------------------------------//

// IZQUIERDA



     if (kLeft && !kRight) 
     {
     if (h > 0)
     h = Approach(h, 0, fric);
     h = Approach(h, -maxSpd, accel);
     }

// DERECHA

     if (kRight && !kLeft)
     {
     if (h < 0)
     h = Approach(h, 0, fric);   
     h = Approach(h, maxSpd, accel);
     }
}   
// ARRIBA


     if (kUp && !kDown)
     {
     if (v > 0)
     v = Approach(v, 0, fric);   
     v = Approach(v, -maxSpd, accel);
     }


// ABAJO

     if (kDown && !kUp)
     {
     if (v < 0)
     v = Approach(v, 0, fric);   
     v = Approach(v, maxSpd, accel);
     }     


para manejar la profundidad

Código: [Seleccionar]
depth=-y*10


con lo de subir la rampa no creo poder ayudarte y aunque tenga algo esta experimental y no funciona correctamente la verdad pero si logro ver que pasa te lo comento
Los siguientes usuarios dieron las gracias a este tema: Goyomix325

6
Preguntas y respuestas / Re:animacion arrojar bombas tipo metal slug
« en: Septiembre 19, 2018, 03:09:27 am »
en metal slug el personaje esta dividido por la cintura las piernas son un objeto y el torso son otro objeto los cuales son unidos mediante un codigo asi es mas sencillo manejar los cambios de armas y las acciones que hace cada personaje
Los siguientes usuarios dieron las gracias a este tema: Yuzo

7
Preguntas y respuestas / Re:Ejecutar un programa externo
« en: Febrero 02, 2018, 05:40:15 am »
puedes hacerlo con el uso de una extension


esta te permite abrir programas y archivos instalados en el pc desde game marker studio:

https://marketplace.yoyogames.com/assets/575/execute-shell

Los siguientes usuarios dieron las gracias a este tema: Clamud, Yuzo

8
Preguntas y respuestas / Re:¿Alguien mas tiene este problema con sprite?
« en: Febrero 01, 2018, 10:36:06 pm »
todo  depende de tu pc generalmente cuando los sprites o archivos del juego desaparecen por arte de magia, es algun problema con los archivos de guardado y como los maneja tu pc
Los siguientes usuarios dieron las gracias a este tema: Yuzo

9
Preguntas y respuestas / Re:una duda
« en: Enero 15, 2018, 10:12:04 pm »
digamos que presiono izquierda y derecha para que el personaje se mueva lo que quiero es que al pulsar por ejemplo la X el personaje se frene en seco hasta que no dejes de presionar esa tecla el personaje no se moverá

gracias por la respuesta  :)
Los siguientes usuarios dieron las gracias a este tema: Yuzo

10
Preguntas y respuestas / Re:No colisiona
« en: Enero 15, 2018, 07:23:21 am »
es una variable del código de shaun spalding la razón por la que no colisiona es porque el código de colisiones esta incompleto te dejo este enlace donde hay un código ya hecho para un juego de plataformas incluye wall jump y slopes.

revisa que te sale mal y ve como puedes armarte tu propio código de colisiones

http://www.comunidadgm.org/desarrollo-de-scripts/platformer-'engine'-source-code/

suerte  :)
Los siguientes usuarios dieron las gracias a este tema: Yuzo

12
image_speed=2 creo que es un poco alto para que se mueva lento podrias usar en su lugar numeros en decimal entre mas alto el decimal mas lento o estable se movera prueba por ejemplo

image_speed=0.25 eso talvez lo haga moverse lento, reemplaza todos los 2 que tengas en este codigo por el 0.25
Los siguientes usuarios dieron las gracias a este tema: Yuzo

13
bueno veo que la estructura es parecida al código de shaun spalding eso es bueno te invito veas este vídeo contiene todo lo que necesitas para empezar con las colisiones:

https://www.youtube.com/watch?v=IysShLIaosk&t

si quieres un codigo ya hecho te invito veas el code source para un juego de plataformas que ya viene equipado con todo lo que nesecitas:

http://www.comunidadgm.org/desarrollo-de-scripts/platformer-'engine'-source-code/


suerte en eso!
Los siguientes usuarios dieron las gracias a este tema: Yuzo, Mental.Gif

14
Preguntas y respuestas / Re:Mostrar animacion una sola vez
« en: Diciembre 24, 2017, 10:55:15 am »
para detener una animacion o "sprite" en concreto puedes usar el evento ANIMATION END y poner  este código

Código: [Seleccionar]
if sprite_index="tu animación que quieres ver una sola vez"
{
image_index="el ultimo frame de tu animacion para que se congele ahi
}

o

Código: [Seleccionar]
if sprite_index="tu animación que quieres ver una sola vez"
{
sprite_index="la siguente animacion que quieres reproducir"
}
Los siguientes usuarios dieron las gracias a este tema: Yuzo

15
Desarrollo de Scripts / Platformer "ENGINE" source code
« en: Diciembre 21, 2017, 10:57:47 am »
Autor original: Shaun spalding
Modificación por: CRISTOPHER2545
Versión de GM utilizada:  :GM8: :GMS:
Descripción: este script es una modificación al código de SHAUN SPALDING que agrega algunas mejoras técnicas a los controles conservando toda la funcionalidad del original.
Código:
"puedes usar este código en un script o en un objeto jugador."
"este código ah sido comprimido para mejor eficiencia y mas rendimiento"
Create event
Código: [Seleccionar]
//movimiento
hsp = 0;
vsp = 0;

//gravedad
grav = 0.5;
m=1
//salto y movimiento
jumpspeed = 11

//friccion maxima
groundAccel = 1 //puedes modificar esto para tener friccion en el piso
groundFric  =1 //puedes modificar esto para tener friccion en el piso
airAccel    = 0.4 //0.4 valores recomendados
airFric     = 0.1// valores recomendados
onGround=false
// velocidad maxima
maxH        = 5
maxV        = 0.1

jumps=0
jumpsmax=2
move_lock = false;
grounded = false;

Alarm 0 event
Código: [Seleccionar]
move_lock = false;
Step event
Código: [Seleccionar]
var tempAccel, tempFric;

//Get the player's input
key_right = keyboard_check(vk_right);
key_left = keyboard_check(vk_left);
key_down = keyboard_check(vk_down);
key_jump = keyboard_check_pressed(vk_space);
key_jump_held = keyboard_check(vk_space)
//React to inputs

if (onGround) {
    tempAccel = groundAccel;
    tempFric  = groundFric;
} else {
    tempAccel = airAccel;
    tempFric  = airFric;
}

if (vsp < 10) vsp += grav;

move_lock = false;
{
// Moving right
if (key_left) && (!key_right)
{
    if (hsp > 0)
        hsp = Approach(hsp, 0, tempFric);   
    hsp = Approach(hsp, -maxH, tempAccel);


if (key_right) && (!key_left)
{
     if (hsp < 0)
        hsp = Approach(hsp, 0, tempFric);   
    hsp = Approach(hsp, maxH, tempAccel);

}


if (!key_left) && (!key_right) && !onGround
    hsp = Approach(hsp, 0, tempFric);
else if (!key_left) && (!key_right)
{
hsp=0
}

//Horizontal Collision
if place_meeting(x+hsp,y,obj_wall)
{
    yplus = 0;
    //subir las cuestas
    while (place_meeting(x+hsp,y-yplus,obj_wall) && yplus <= abs(1*hsp)) yplus += 1;
    if place_meeting(x+hsp,y-yplus,obj_wall)
    {
        while (!place_meeting(x+sign(hsp),y,obj_wall)) x+=sign(hsp);
        hsp = 0;
    }
    else
    {
        y -= yplus
    }
}
x += hsp;
//bajar las cuestas
if !place_meeting(x,y,obj_wall) && vsp >= 0 && place_meeting(x,y+2+abs(hsp),obj_wall)
{while(!place_meeting(x,y+1,obj_wall)) {y += 1;}}

//Vertical Collision
if (place_meeting(x,y+vsp,obj_wall))
{
    while(!place_meeting(x,y+sign(vsp),obj_wall))
    {
        y += sign(vsp);
    }
    vsp= 0;
}
y += vsp;


if (!place_meeting(x,y+1,obj_wall))
{
onGround=false
}
else
{
onGround=true
airAccel    = 0.4
}

if (place_meeting(x,y+1,obj_wall))
{
    jumps = jumpsmax; 
}

if (key_jump) && (jumps > 0)
{
    jumps -= 1;
    vsp = -jumpspeed;
}




if (vsp < 0) && (!key_jump_held)
{
    vsp += grav;//+
}


//wall jump system
if key_jump and place_meeting(x + 1, y, obj_wall) and grounded=false
{
    vsp = -12;
    move_lock = true;
     hsp=-6
     jumps=1
     alarm[0]=5
   
}
else

if place_meeting(x + 1, y, obj_wall) && vsp>0
{
vsp=1
}


if key_jump and place_meeting(x - 1, y, obj_wall) and  grounded=false 
{
    vsp = - 12;
       move_lock = true;
       alarm[0]=5

   hsp=6
   jumps=1
}
else

if place_meeting(x- 1, y, obj_wall) && vsp>0
{
vsp=1
}


"debes de crear un script con el nombre "Approach" para que el código anterior funcione"
"este código sirve para detectar las colisiones con las paredes"
Código: [Seleccionar]

if (argument0 < argument1)
    return min(argument0 + argument2, argument1);
else
    return max(argument0 - argument2, argument1);


"el código funciona perfectamente ya trae el doble salto y el wall jump al igual que los "slopes" si deseas agregar mas cosas puedes ver los vídeos de shaun spalding ya que este código sigue siendo compatible con sus códigos aunque tambien puedes integrar códigos externos para mejorar este codigo"

se recomienda correr el juego a 60 FPS ya que el código esta adaptado para esa velocidad si deseas usar 30 FPS recomiendo cambiar todos los valores en el evento CREATE para que se adapten a la velocidad del juego.

para usar las colisiones es necesario crear un objeto llamado "obj_wall" este puede ser cambiado tomando en cuenta que se debe cambiar el nombre en todo el código, al tener este objeto todas las funciones operaran correctamente incluso el wall jump, la versión del wall jump es antigua y es la misma que utilizaba en mis juegos de prueba.

DATO CURIOSO: a todo esto me costo exactamente 3 semanas en re-crear y testear el código las partes mas difíciles de añadir fue la fricción aérea y en el piso al igual que el wall jump, el código es totalmente amigable y puedes DESACTIVAR todas las habilidades extras que el código ofrece.

cualquier problema con este código puedes mandarme un correo a cagamesco@gmail.com o en la mensajería de este foro y responderé a la brevedad, si encuentras algún bug favor de notificarlo para poder postear un parche en el código
Los siguientes usuarios dieron las gracias a este tema: Mental.Gif, SpinJosue

Páginas: 1 2