Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: somnus en Junio 30, 2018, 02:23:59 AM

Título: Camara estilo metroid
Publicado por: somnus en Junio 30, 2018, 02:23:59 AM
Nombre del creador: Somnus

Breve descripción de su función

este es un ejemplo de como crear una camara para un juego tipo metroid donde puede haber rooms de direntes medidas, ya sea rooms grandes, pasillos, etc.

Versión GM utilizada
este codigo esta hecho con GMS 2, sin embargo la misma logica puede ser utilizada para versiones anteriores

Código del Script -si se usan argumentos, se debe indicar su función-


Se van a necesitar lo siguiente:

obj_room
obj_camera
obj_jugador
un room con las medidas deseadas
global.active_room;  //en esta variable guardaremos el room en el que nos encontramos



Empecemos con el funcionamiento:

OBJ_PLAYER:
este puede ser cualquier objeto que se mueva dentro de cada room de juego, moverse a las 4 direcciones, este lo pueden hacer como mejor les paresca.


OBJ_ROOM.-
las medidas de este objeto van a indicar el tamano del room cabe mencionar que este no es un room de GMS, si no las areas en las que estaremos haciendo las transiciones

evento step:
if( x < obj_player.x
&& obj_player.x < x + sprite_width
&& y < obj_player.y
&& obj_player.y < y + sprite_height)
{
global.active_room = self;
}



OBJ_CAMERA.- este objeto es el que va a estar moviendo la camara segun la posicion del jugador pero se movera hasta los margenes del room activo.

evento step:

     //asumiendo que las medidas de la view es 640 x 480
     view_middle_width = 640/2;
     view_middle_height =  480/2


        view_xmin = global.active_room.x; //margen minimo del room en eje X
view_ymin = global.active_room.y; //margen minimo del room en eje Y

view_xmax = global.active_room.x + global.active_room.sprite_width; //margen maximo del room en eje X
view_ymax = global.active_room.y + global.active_room.sprite_height; //margen maximo del room en eje Y

camera_set_view_pos
(
view_camera[ 0 ], //la camara/view a mover, en este caso 0

// la posicion de la camara en eje X, dentro de los margenes minimo y maximo del room activo
        clamp( obj_nem.x, view_xmin + view_middle_width, view_xmax - view_middle_width  ) - view_middle_width,

// la posicion de la camara en eje Y, dentro de los margenes minimo y maximo del room activo
clamp( obj_nem.y, view_ymin + view_middle_height, view_ymax - view_middle_height ) - view_middle_height
);



el room de game maker debe de ser grande, lo suficiente para contener los obj_room dentro de el,
supongamos si la view es de 640x480, entonces podriamos tener:

- 1 room de 2560 x 480

entonces este room puede contener 2 obj_room dentro
el primero:
  x:0
  y:0
  width: 1920
  height:480

el segundo:
  x:1920
  y:0
  width: 640
  height:480


entonces, al mover el jugador, este podra ir libremente dentro todo el obj_room 1, al llegar al obj_room 2, este se activara y el view ahora sera el correspondiente al alrea del obj_room 2.


FUNCIONAMIENTO:

lo que se hace es que el area que se muestra por pantalla es aquella definida por el obj_room, al momento de salir del room actual y entrar en otro, el nuevo se vuelve el activo y la view muestra el area correspondiente a este, de esta misma manera se pueden tener tantos rooms se quiera de los tamanos que quieran, esto puede ser un room grande donde se encuentra el enemigo y luego pasar por una pasillo largo, el cual puede ser un pedazo de la pantalla.

NOTAS:
la variale global para saber cual es el room activo, se puede poner donde se quiera, solo que tiene que estar definida porque es de esta de donse se obtienen las medidas del room activo del juego.


link del ejecutable:
https://marketplace.yoyogames.com/assets/7122/sliding-camera





Título: Re:Camara estilo metroid
Publicado por: kostra en Julio 24, 2018, 10:33:08 PM
esto hace que puedas poner en una misma room varias rooms y la cámara se mueva de un lado a otro inteligentemente, o van por rooms separadas y haces el efecto, o como va la cosa?
Título: Re:Camara estilo metroid
Publicado por: somnus en Julio 25, 2018, 12:47:23 AM
dentro del GMS room, creas rooms mas pequenos de diferentes tamanos, tu puedes ir de un lugar a otro dentro de la misma room, y la camara se va a mover en esa room, cuando salgas de esa room, la camara se va a activar en la nueva room a la que enraste y podras moverte libremente ya que la camara te seguira.

dejo el link para que te descargues el ejecutable donde viene el ejemplo funcionando, por cierto viene otro ejemplo un poco mas buscado, pero falta perfeccionarlo, espero y te sirva
https://marketplace.yoyogames.com/assets/7122/sliding-camera
Título: Re:Camara estilo metroid
Publicado por: kostra en Julio 25, 2018, 01:08:08 AM
viendo el video creo hasta que he pillao el truco xD

Gracias!! :B