Muy buenas:
Tengo un problemilla con el tema de la colisión de mi personaje con los "objetos" que componen las paredes o muros. en cuanto me acerco, el sprite del protagonista se queda bloqueado sin poder andar a ningún lado. Puede saltar en vertical pero no se "despega". ¿que puedo hacer para que esto no me ocurra?
Gracias a todos
amigo creo que el problema va con las mascaras de colision de tu Personaje, arreglalas que todos los sprites de tu personajes tengan el mismo ancho y largo de mascara para evitar ese error
Intenta que sea siempre todo multiplo de 2, tiles de 16x16 y la velocidad vertical que sea tambien multimpo de dos por ejemplo vspeed -= 0.2; y posiciona el personaje en la room en un tile no entre dos. Saludos!
La primera opción no me a funcionado. He puesto la mascara de colisión a todo el cuadro del sprite y me sigue pasando.
Respecto a la segunda; mi sprite es de 75 x 75. He cargado otro sprite de 80 x 80 y al probar el juego me da error y me saca al menú de nuevo. También he revisado la velocidad vertical y es correcta.....
Hay alguna opción que al chocar con el muro mi sprite rebote un par de pixeles hacia atras?
Un saludo y gracias por las respuestas
Cita de: davicin87 en Mayo 29, 2014, 02:40:51 PM
La primera opción no me a funcionado. He puesto la mascara de colisión a todo el cuadro del sprite y me sigue pasando.
Respecto a la segunda; mi sprite es de 75 x 75. He cargado otro sprite de 80 x 80 y al probar el juego me da error y me saca al menú de nuevo. También he revisado la velocidad vertical y es correcta.....
Hay alguna opción que al chocar con el muro mi sprite rebote un par de pixeles hacia atras?
Un saludo y gracias por las respuestas
Abres el objeto a mover.
Buscas la pestañita MOVE > Jump > Move to contact
Espero que te sea de ayuda si es eso.....
alcyonecodigo te dejo la configuración de mi personaje cuando colisiona con los muros a ver si es que tengo mal algo, por que lo de move to contact lo tengo puesto.
Colision con el muro:
TEST VARIABLE:
APPLIES TO: Self
VARIABLE: vspeed
VALUE: 0
OPERATION: less than
ELSE
MOVE TO CONTACT:
APPLIES TO: self
DIRECTION: direction
MAXIMUM: 12
AGAINST: solid objets
SPEED VERTICAL:
APPLIES TO: self
VERT.SPEED: 0
RELATIVE: no
Muchas gracias de nuevo.
Cita de: davicin87 en Mayo 29, 2014, 04:22:36 PM
alcyonecodigo te dejo la configuración de mi personaje cuando colisiona con los muros a ver si es que tengo mal algo, por que lo de move to contact lo tengo puesto.
Colision con el muro:
MOVE TO CONTACT:
APPLIES TO: self
DIRECTION: direction
MAXIMUM: 12
AGAINST: solid objets
SPEED VERTICAL:
APPLIES TO: self
VERT.SPEED: 0
RELATIVE: no
Muchas gracias de nuevo.
Prueba solo con estas dos,quita lo demas... ;-)
Nada. No hay manera. Sigue pasando lo mismo... Puede ser por la forma del sprite?
Cita de: davicin87 en Mayo 29, 2014, 09:31:21 PM
Nada. No hay manera. Sigue pasando lo mismo... Puede ser por la forma del sprite?
No te rindas,tienes los objetos,bloque y jugador marcados como solido?
Te voy a intentar ayudar,yo tengo el objeto del jugador como esta en la imagen que te dejo adjunta y la colisión con el bloque como te dije arriba ... Espero que lo soluciones,te voy a dejar un videotuto ,si lo haces bien y en los sprites tienes la mascara del jugador y el bloque en presise y automatico te tiene que ir bien.1 saludo y mirate este vídeo http://www.youtube.com/embed/1KLtSfFuRRo
sube el proyecto amigo aqui te podemos hechar una mano....
Saludes
Cita de: alcyonecodigo en Mayo 29, 2014, 09:48:05 PM
Cita de: davicin87 en Mayo 29, 2014, 09:31:21 PM
Nada. No hay manera. Sigue pasando lo mismo... Puede ser por la forma del sprite?
No te rindas,tienes los objetos,bloque y jugador marcados como solido?
Si si que los tengo como solidos a ambos.....
Buenas:
Investigando por la red me e encontrado con un post que a resuelto mi problema de un plumazo. No se si la gente lo sabrá pero lo pongo para compartirlo con vosotros.
Antes de nada agradecer por este foro también al usuario MacKusaragui de la comunidad Game Maker PRO de Taringa.
La solución viene para juegos con movimiento lateral izq-der o perspectiva cenital arr-aba-der-izq.
Al crear el objeto marcamos la pestaña solid y clickamos en la pestañita MASK un poquito mas abajo. ahí añadimos el sprite del objeto en cuestión, que en este caso seria el muro.
Hacemos exactamente lo mismo con el objeto player. solo que evidentemente esta vez, añadiremos el sprite del player.
Ahora ( en juego tipo Mario Bross) dentro del objeto player, creamos un evento step y añadimos el siguiente codigo:
hspeed =(keyboard_check(vk_right)-keyboard_check(vk_left))*4;
if vspeed<12{vspeed+=1};
if keyboard_check_pressed(vk_space)&&!place_free(x,y+1){vspeed=-12};
while !place_free(x+hspeed,y)&& hspeed!=0{
if hspeed>0{hspeed-=1};
if hspeed<0{hspeed+=1};
};
x+=hspeed;hspeed=0;
while !place_free(x,y+vspeed)&& vspeed!=0{
if vspeed>0{vspeed-=1};
if vspeed<0{vspeed+=1};
};
Si por el contrario el juego es en las cuatro direcciones (tipo pacman) ponemos este otro:
hspeed=(keyboard_check(vk_right)-keyboard_check(vk_left))*4
vspeed=(keyboard_check(vk_down)-keyboard_check(vk_up))*4
do{
vspeed=round(vspeed);
if vspeed>0 {vspeed-=1};
if vspeed<0{vspeed+=1};
}until (place_free(x,y+vspeed)||vspeed=0);
do{
hspeed=round(hspeed);
if hspeed>0 {hspeed-=1};
if hspeed<0{hspeed+=1};
}until (place_free(x+hspeed,y)||hspeed=0);
He de añadir que lo e probado tanto en GM 8.1 Lite y GM Studio y en ambos va de maravilla.
Vuelvo a insistir en que todo el merito es del forero de taringa ( no se si estará registrado aquí también)MacKusaragui y todas las gracias por parte de los novatos como yo y al que le sea de ayuda deben ir para el.
Un abrazo.