InicioHazlo Tu MismoTutorial Game Maker. Como crear divicion de zonas tipo Rpg

Tutorial Game Maker. Como crear divicion de zonas tipo Rpg

Hazlo Tu Mismo3/21/2015
Hola todos, Bienvenidos a mi post. Por favor Limpiense las patas antes de entrar. Se preguntaran, ¿que quiere decir este Wanaco con divicion de Zonas tipo RPG? Bueno, con divicion de zonas me refiero a que cuando estamos en cierta area del room sea una zona y nos avise si entramos o salimos de dicha zona o si la hemos descubierto. Algo similar a este Video: link: https://www.youtube.com/watch?v=Grwb-Sn1NoI Se me ocurren un par de formas de hacer esto. Una seria verificando coordenadas pero seria muy complicado y la idea es transmitirle este conocimiento a quienes estan comenzando, ya que quienes tienen experiencia seguramente se figuren como hacerlo. entonces lo haremos colicionando con un objeto Nota: esta hecho juegos en los que puedes moverte en las 4 direcciones para un juego de plataformas puede que lo tengan que modificar, salvo que dividan zonas por altura y longitud Bueno. Para empezar crearemos unos objetos y los llamaremos - obj_Frontera para marcar los limites de zona - obj_Zona para dibujar el texto que avise si entramos o salimos de la zona y un script llamado scr_globalVars para declarar las variables globales de nuestro juego y una font ya sea comun o con sprites como prefieran en el script scr_global.Vars escribiremos global.Frontera=" " global.Zona=" " Esto sirve para verificar en que zona nos encontramos y si ya la habiamos descubierto ahora a nuestro jugador le creamos 2 variables PrevX=x //Verifica coordenada x PrevY=y //Verifica coordenada y ahora en el evento Step del jugador le ponemos //Si esta a menos de 64 pixeles de distancia con el obj_Frontera y no esta encima de el //PrevX y PrevY toman las coordenadas x e y actuales if distance_to_object(obj_Frontera)<=64 && ! place_meeting(x,y,obj_Frontera) { PrevX=x; PrevY=y; } Ahora Si: Abrimos el objeto obj_Frontera y le desmarcaremos la casilla visible (pueden dejarla marcada para verificar que funcione y luego desmarcarla) Ahora le pondermos un evento Create y declararemos las siguientes variables (Que luego mificaremos en creation code de cada instancia) Col=0 // para verificar si ya se conoce la zona Nombre=" " //Nombre de la zona Front=" " //La usaremos para verificar la pocicion de la frontera y el jugador Txt[0]="Nueva Zona Encontrada"+string(Nombre) Txt[1]="Entrando a "+string(Nombre)[ Txt[2]="Saliendo de" +string(Nombre) Ahora un evento de colicion con el personaje global.Frontera = Nombre //Si Col es 0 no hemos descubierto la zona, si Col es 1 ya la habiamos descubierto if Col=0{ //Si ya existe una instancia del obj_Zona la destruimos if instance_exists(obj_Zona) {with(obj_Zona){instance_destroy()}} //Creamos el obj_Zona el texto Crea=instance_create(other.x,other.y-32,obj_Zona) Crea.Txt=Txt[0] alarm[0]=30 } //Frontera Horizontal izquierda if Front="H1" && Col=1{ if instance_exists(obj_Zona) {with(obj_Zona){instance_destroy()}} //Si el Jugador esta afuera de la zona antes de entrar if x > other.PrevX{ Crea=instance_create(other.x,other.y-32,obj_Zona) Crea.Txt=Txt[1] } //Si el jugador esta adentro de la zona antes de salir if x < other.PrevX{ Crea=instance_create(other.x,other.y-32,obj_Zona) Crea.Txt=Txt[2] } } //Frontera Horizontal Derecha if Front="H2"&& Col=1{ if instance_exists(obj_Zona) {with(obj_Zona){instance_destroy()}} //Si el jugador esta adentro de la zona antes de salir if x > other.PrevX{ Crea=instance_create(other.x,other.y-32,obj_Zona) Crea.Txt=Txt[2] } //Si el Jugador esta afuera de la zona antes de entrar if x < other.PrevX{ Crea=instance_create(other.x,other.y-32,obj_Zona) Crea.Txt=Txt[1] } } //Frontera Vertical Arriva if Front="V1"&& Col=1{ if instance_exists(obj_Zona) {with(obj_Zona){instance_destroy()}} //Si el Jugador esta afuera de la zona antes de entrar if y > other.PrevY{ Crea=instance_create(other.x,other.y-32,obj_Zona) Crea.Txt=Txt[1] } //Si el Jugador esta dentro de la zona antes de salir if y < other.PrevY{ Crea=instance_create(other.x,other.y+32,obj_Zona) Crea.Txt=Txt[2] } } //Frontera Vertical Arriva if Front="V2" && Col=1{ if instance_exists(obj_Zona) {with(obj_Zona){instance_destroy()}} //Si el Jugador esta dentro de la zona antes de salir if y > other.PrevY{ Crea=instance_create(other.x,other.y+32,obj_Zona) Crea.Txt=Txt[2] } //Si el Jugador esta afuera de la zona antes de entrar if y < other.PrevY{ Crea=instance_create(other.x,other.y-32,obj_Zona) Crea.Txt=Txt[1] } } ahora un evento alarm[0] Esto hace que todos los obj_Frontera cuyo valor de la variable Nombre sean iguales la variable Col automaticamente pasa a ser uno y evitamos que nos vuelva a tomar la zona como recien descubierta. with(obj_Frontera){ if Nombre = global.Frontera{ Col=1 } } Muy bien, Llego el momento de crear el objeto Zona que dibujara el texto correspondiente a la situacion evento create C=c_aqua //Color para el texto C1=c_blue //Color para el Texto C2=c_white //Color para el Texto Alpha=1 //Maneja la opacidad del texto alarm[0]=10 //Reduce la opacidad cada 10 steps evento alarm[0] //Reduce un poco la opacidad cada 10 steps Alpha-=0.075 alarm[0]=10 Evento Step //Si la opacidad llega a 0 se destruye el objeto if Alpha<=0{instance_destroy()} Evento Draw //Centramos el texto draw_set_halign(fa_middle) draw_set_valign(fa_center) //Asignamos una font draw_set_font(font0nombre de la font que crearon //Dibujamos un texto en las coordenadas que prefieran. yo use las coordenadas de mi experimento draw_text_ext_colour(view_xview[0]+240,view_yview[0]+48,Txt,-1,360,C,C2,C1,C,Alpha) //Volvemos los textos a su pocicion por defecto para no alterar los demas textos draw_set_halign(fa_left) draw_set_valign(fa_top) Bueno, aqui ya estan todos los objetos prontos Vamos a crear una zona completa y la entrada o salida de 3 zonas mas para que lo puedan probar primero coloquen 3 objetos frontera en la room y estirenlos dividiendo la zona. luego coloquen 3 mas un poco separados les quedara como esta imagen: Los objetos azule estirados son las fronteras. los 3 de adentro son una zona completa y los otros 3 que estan por fuera son la entrada y salida de 3 zonas diferentes. es Hora de decirle a el obj_Frontera a que zona pertenese entonces en el que esta mas a la izquierda de los 3 que forman una zona entera haganle click derecho y eligan creation code Genial ahora declaremos las variables Nombre="Las Grutas" Front="H1" al que esta mas a la derecha de los que forman la zona entera le ponemos lo mismo pero en front le ponemos "H2" para que el objeto sepa que esta mas a la derecha que el otro al de abajo que forma la zona. lo mismo solo que le ponemos "V2" para que sepa que es el limite de abajo de la zona ahora a los tres que rebordean la zona le hacemos lo mismo solo que a cada uno le ponemos un nombre diferente. Recuerden respetar el patron. esto es muy importante. imaginen la zona como un marco cuadrado el objeto frontera que marca el limite de la izquierda de la zona debe tener como valorde Front="H1" el que esta a la derecha Front="H2" el que esta arriva Front="V1" y el de abajo Front="V2" Si no respetan este patron no va a funcionar correctamente Ahora entren y salgan de las zonas a su antojo y vean como funciona. -Si nunca habiamos descubierto la zona nos dira "Nueva Zona descubierta + el nombre que le pusimos a la zona" -si ya la descubrimos y estamos entrando nos dira "Entrando a + El nombre de la zona" -y si estamos saliendo nos dira "Saliendo de + El nombre de la zona" Bueno espero sea comprensible y que les sea util Un Abrazo Grande
Datos archivados del Taringa! original
5puntos
45visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

C
Chingles🇦🇷
Usuario
Puntos0
Posts5
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.