Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: evansmako123 en Marzo 16, 2016, 05:51:40 PM

Título: Juego en movimiento
Publicado por: evansmako123 en Marzo 16, 2016, 05:51:40 PM
Me gustaria saber como imitar el Jetpack de Metal Slug, se puede apreciar desde el segundo numero 52 de este video https://www.youtube.com/watch?v=CbFdQTGId88, lo que quiero es que mi personaje este en constante movimiento por el background sin que se salga de los limites, he intentado poner barreras alrededor de la view que detengan que se salga de los limites pero no resulta. Y tambien algun codigo o manera para disparar en esas condiciones arribas mencionadas

¿Algun consejo?
Título: Re:Juego en movimiento
Publicado por: Clamud en Marzo 16, 2016, 08:59:22 PM
Primero la vista se tiene que mover con una velocidad constante:
[gml]
//Evento Step
view_xview[0] += valor1;
view_yview[0] += valor2;
[/gml]
valor1 y valor2 deben ser mayores a 1, de lo contrario la vista no se moverá, esto es porque las variables de la vista se redondean automáticamente.
Si quieres que la vista tenga un movimiento más lento debes usar unas variables personalizadas:
[gml]
//Evento Step
x_vista += valor1;
y_vista += valor2;
view_xview[0] = x_vista;
view_yview[0] = y_vista;
[/gml]
El personaje debe tener el mismo desplazamiento de la vista, y para que no se salga, hay que revisar su posición relativa a la vista:
[gml]
{ /*código de movimiento del personaje*/ }

//desplazar como la vista
x += valor1;
y += valor2;

//revisar posicion
if( x < view_xview[0]+(anchura/2) ) x = anchura/2;
if( x > view_xview[0]+view_wview[0]-(anchura/2) ) x = view_wview[0]-(anchura/2);
if( y < view_yview[0]+(altura/2) ) y = altura/2;
if( y > view_yview[0]+view_hview[0]-(altura/2) ) x = view_hview[0]-(altura/2);
[/gml]
anchura y altura son las dimensiones de la máscara de colisión, y se dividen entre 2 porque se supone que está centrada en la posición de la instancia, esos valores debes escribirlos de forma explícita.
Título: Re:Juego en movimiento
Publicado por: josesito1432 en Marzo 17, 2016, 01:39:11 AM
yo creo que que es mucho mas simple
si podes apreciar tiene un fondo repetitivo ose cuando sube al abion cambia de room, entonces lo unico que hace es entrar en otr arom chica podria decirse y lo unico que sucede es que el fonfo se mueve, luego baja y se peude apresiar la parte de abajo de la room, que sigue en mobimiento, en resumen lo unico que se muebe es el fondo, y luego van apareciendo los objetos...
Título: Re:Juego en movimiento
Publicado por: josesito1432 en Marzo 17, 2016, 01:41:48 AM
y para que los enemigos parescan que estan moviendose o que son tragados por la pantalla al quedar atras, podes hacer que al creazrse se muevan hacia la izquierda que, o algoa asi,.
Título: Re:Juego en movimiento
Publicado por: josesito1432 en Marzo 17, 2016, 01:44:38 AM
sino deverias hacer room demasiado largas, claramente tenes que prestar atencion,  que de tardar en destruir los enemigos que vienene por ronda, la room seria mas larga, si ves en el juego cada vez que amata a una ronde de enemigos viene otra, y asi, al llegar a un punto cabe en ese nivel por ejemplo despues de matar a los aviones, baja, y ahi empeiza de nuevo, pero presta atencion al fondo es totalmente repetitivo,... creo que me explico ajjaja bueno si te sirvio mi consejo avisame jajaa..
Título: Re:Juego en movimiento
Publicado por: evansmako123 en Marzo 18, 2016, 10:40:25 PM
Cita de: Clamud en Marzo 16, 2016, 08:59:22 PM
Primero la vista se tiene que mover con una velocidad constante:
[gml]
//Evento Step
view_xview[0] += valor1;
view_yview[0] += valor2;
[/gml]
valor1 y valor2 deben ser mayores a 1, de lo contrario la vista no se moverá, esto es porque las variables de la vista se redondean automáticamente.
Si quieres que la vista tenga un movimiento más lento debes usar unas variables personalizadas:
[gml]
//Evento Step
x_vista += valor1;
y_vista += valor2;
view_xview[0] = x_vista;
view_yview[0] = y_vista;
[/gml]
El personaje debe tener el mismo desplazamiento de la vista, y para que no se salga, hay que revisar su posición relativa a la vista:
[gml]
{ /*código de movimiento del personaje*/ }

//desplazar como la vista
x += valor1;
y += valor2;

//revisar posicion
if( x < view_xview[0]+(anchura/2) ) x = anchura/2;
if( x > view_xview[0]+view_wview[0]-(anchura/2) ) x = view_wview[0]-(anchura/2);
if( y < view_yview[0]+(altura/2) ) y = altura/2;
if( y > view_yview[0]+view_hview[0]-(altura/2) ) x = view_hview[0]-(altura/2);
[/gml]
anchura y altura son las dimensiones de la máscara de colisión, y se dividen entre 2 porque se supone que está centrada en la posición de la instancia, esos valores debes escribirlos de forma explícita.

Muchas gracias me sirvio :D!