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!.

Autor Tema: Hola me podrian testear esto?  (Leído 356 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado XxBL100xX

en: Enero 08, 2020, 12:30:55 am
Bueno en si lo que necesito que me ayuden es como quito el bug de la colision, mi codigo de colision es este: :
//Collision
move_contact_solid(270,1)
gravity=0;
vspeed=0;
esto es cuando colisiona con el objeto solido

y aqui esta el juego en una version muuuy temprana estare subiendo las versiones conforme valla actualizando el proyecto por ahora solo el movimiento base aca lo descargan porfa notificame si encuentran otro bug
https://www.mediafire.com/file/on3rfp1ezbwzyed/Megaman_X_Elf_Wars_V0.01.rar/file
solo habren el que tiene el nombre del juego no el instalador Gracias :)

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado dixon

Respuesta #1 en: Enero 09, 2020, 12:53:54 am
Hola, buenas noches



Puedes descargar un ejecutable y un editable para gm4 que tiene la solución Aquí



La solución que propóngo cambia todo el código que estás usando por uno parecido al siguiente código:

Código: [Seleccionar]
///simulando el evento create con la variable score
if(score=0)
{
score=1
//botones
b2=0
d=1 //direccion
s=0// el salto
estado="parado"
v=0 //velocidad
time_eye=0//parpadeo
font_size=12
}

///botones
if(keyboard_check(vk_f2))game_restart()
b1=keyboard_check(vk_left)
b2p=(b2=0)*keyboard_check(ord("Z"))
b2=keyboard_check(ord("Z"))
b3=keyboard_check(vk_right)

//movimiento vertical
if((estado="parado" || estado="caminando")*b2p*(s=0))s=20
if(s)s-=1
while(!place_empty(x,y-s))s-=1
if(s<0)s=0
y+=5-s
while(!place_empty(x,y+2))y-=1

//movimiento horizontal
control=(b1+b3=1)
if(control)
{
 d=1-2*(b1)
 v+=d
}
else
{
 if(abs(v))v-=sign(v)*2
 if(abs(v)<2)v=0
}
if(abs(v)>5)v=5*sign(v)
while(!place_empty(x+v,y-5))v-=sign(v)
x+=v

//control de imagen
if(place_empty(x,y+10)){estado="aire"}else{estado="suelo"}
if(estado="aire"){if(s>5){estado="subiendo"}else{estado="bajando"}}
if(estado="suelo"){if(x=xprevious){estado="parado"}else{estado="caminando"}}
if(estado="subiendo"){if(sprite_index!=2+(d<0)*3){sprite_index=2+(d<0)*3;image_speed=0.2;image_index=0};if(image_index>2){image_index=2}}
if(estado="bajando"){if(sprite_index!=2+(d<0)*3){sprite_index=2+(d<0)*3;image_speed=0.1};if(image_index<3){image_index=3};if(image_index>4){image_index=4}}
if(estado="parado"){if(sprite_index!=0+(d<0)*3){sprite_index=0+(d<0)*3};if(time_eye=0){image_speed=0.2};if(floor(image_index)=2){image_speed=0;image_index=0};if(time_eye>100){time_eye=0}else{time_eye+=1}}
if(estado="caminando"){if(sprite_index!=1+(d<0)*3){sprite_index=1+(d<0)*3;image_speed=0.5}}
draw_sprite(sprite_index,image_index,x,y)

« última modificación: Enero 09, 2020, 01:06:57 am por dixon »

Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.
 
Los siguientes usuarios dieron las gracias a este tema: XxBL100xX


Desconectado XxBL100xX

Respuesta #2 en: Enero 09, 2020, 02:39:42 am
Muchas gracias de verdad por tomarte el tiempo de hacer esto de verdad te lo agradezco mucho  :) reempalzare todos los codigos con las mecanicas que me dajaste aca arriba ya si si es un gran cambio en la hora de crear juegos ya que yo lo hacia con puro hspeed y vspeed gracias de verdad en unos dias subire otra version de mi ejecutable con el disparo y las colisiones arregladas gracias de verdad ;)