Noticias

¡Ayuda a la Comunidad GM, haz una donación!

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: Boundary Views.. ¿Qué estoy haciendo mal?  (Leído 1250 veces)

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

Desconectado _-Caleb-_

  • Asiduo
  • *
  • Puntos: 183
  • Mensajes: 123
    • Ver Perfil
    • Cadetes del Espacio
en: Febrero 28, 2014, 09:52:08 am
Hola.

A ver, tengo un mapa con una view activada, que funciona bien, lo que me gustaría es poner enemigos estáticos a lo largo del mapa y que al alcanzar la vista de cámara empezaran a moverse...

Tengo un enemigo y en el event create tengo un start moving in a direction en 0 y detenido.

Luego tengo un evento Boundary View 0 y ahí tengo que empiece a moverse

La cosa es que se mueven antes de que llegue al view.....

Para más info:

el nivel tiene 9000 * 240 y en el view 0 (Que es el que sigue al jugador) tengo estos parámetros:

View in Room:
X0, Y0, W320, H240

Port on Screen:
X0, Y0, W320, H240

Object Following: Mi Jugador
Hbor: 160
VBor: 120
Hsp -1
VSp -1

¿Álguien sabe qué hago mal o qué me falta? Mientras tanto voy a mirar las referencias de Views en la ayuda, a ver si encuentro algo.

¡Saludos!

Visita mi proyecto: Space Cadet
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado vampy09

  • Asiduo
  • *
  • Puntos: 289
  • Mensajes: 247
  • Sexo: Masculino
    • Ver Perfil
Respuesta #1 en: Febrero 28, 2014, 03:24:17 pm
{
  instance_activate_all();
  instance_deactivate_region(view_xview[0],view_yview[0], view_wview[0],view_hview[0],false,true);
}

Pon este codigo en el Evento Step del jugador. Este codigo desactivara todas las instancias que se encuentren fuera de la view, las activara cuando se encuentren dentro la de la view.
Una instancia desactivada no sera visible ni sus eventos se realizaran.

The next best thing to knowing something,
is knowing where to find it.
 


Desconectado ivn_eze

Respuesta #2 en: Febrero 28, 2014, 03:57:31 pm
otra cosa que podrias hacer es ponerle a los objetos y al jugador sprites cuadrados transparentes del tamaño de la room y que lo sigan y al collisionar muevan el objeto


Desconectado _-Caleb-_

  • Asiduo
  • *
  • Puntos: 183
  • Mensajes: 123
    • Ver Perfil
    • Cadetes del Espacio
Respuesta #3 en: Febrero 28, 2014, 05:14:32 pm
{
  instance_activate_all();
  instance_deactivate_region(view_xview[0],view_yview[0], view_wview[0],view_hview[0],false,true);
}

Pon este codigo en el Evento Step del jugador. Este codigo desactivara todas las instancias que se encuentren fuera de la view, las activara cuando se encuentren dentro la de la view.
Una instancia desactivada no sera visible ni sus eventos se realizaran.

Gracias, me ha ido genial, otra cosa, podrías explicarme qué significan los false y true del final de la línea? Es que en la ayuda del IDE me sale el texto cortado.

otra cosa que podrias hacer es ponerle a los objetos y al jugador sprites cuadrados transparentes del tamaño de la room y que lo sigan y al collisionar muevan el objeto

Lo había pensado pero supuse que habría una manera menos "cochambrosa" de hacerlo y vampy ha dado con ello :D

Visita mi proyecto: Space Cadet
 


Desconectado vampy09

  • Asiduo
  • *
  • Puntos: 289
  • Mensajes: 247
  • Sexo: Masculino
    • Ver Perfil
Respuesta #4 en: Febrero 28, 2014, 08:47:04 pm
instance_deactivate_region(left,top,width,height,inside,notme)

Los primeros 4 valores definen el area en donde la funcion se debe aplicar ( comumente la misma area de la view )
 
inside: si es false ( como el ejemplo ) las instancias deben estar TOTALMENTE afuera del area para que sea desactivada. Esto evita que las instancias se desactiven en un punto medio, osea cuando una mitad de la instancia se encuantra dentro y la otra mitad afuera de la view; que sucede cuando es true.

notme: si tiene un valor true ( como el ejempo ) la instancia que esta llamando la funcion ( en tu caso el jugador ) no va ha ser "afectado" por la funcion.l


ivn_eze : de cierta forma "estas inventando la rueda", dado que tu ejemplo, aunque ingenioso, tiene una desvantaja. La funcion he puesto ayuda tambien en el "perfomance" general del room, dado que el GM tiene que "estar atento" de menos instancias en cada step y solo "preocuparse" solo por las instancias que se encuentren dentro de la region definida en la funcion. Algo que tu ejemplo no hace.
Saludos!

The next best thing to knowing something,
is knowing where to find it.
 


Desconectado ivn_eze

Respuesta #5 en: Marzo 01, 2014, 02:53:14 am
Citar
ivn_eze : de cierta forma "estas inventando la rueda", dado que tu ejemplo, aunque ingenioso, tiene una desvantaja. La funcion he puesto ayuda tambien en el "perfomance" general del room, dado que el GM tiene que "estar atento" de menos instancias en cada step y solo "preocuparse" solo por las instancias que se encuentren dentro de la region definida en la funcion. Algo que tu ejemplo no hace.
Saludos!

claro,la forma que yo puse tendria todo el juego activado "al pedo" y pierde fluidez.

el ejemplo en si era una idea que se me ocurrio luego de jugar el dbz smashdown de SNES en nesbox, en el que cuando los jugadores se alejan, automaticamente se separa la pantalla, y cuando mas se acercan, se une en una sola.
luego pense que en este caso podria funcionar pero es mas eficiente el gml


Desconectado vampy09

  • Asiduo
  • *
  • Puntos: 289
  • Mensajes: 247
  • Sexo: Masculino
    • Ver Perfil
Respuesta #6 en: Marzo 01, 2014, 05:16:01 am
@ivn_eze:
Bueno es algo que tambien a mi me ha pasado; que luego de haber creado mi algoritmo al tiempo me doy cuenta que por medio de una funcion podia realizar el mismo resultado y de una forma mas sencilla!
Lo importante es el proceso mental que haz llevado a cabo para crear tu solucion.

Dado que el GM tiene tantos años de haberse creado, muchas de las posibles situaciones que podamos enfrentarnos en la creacion de un juego, ya han sido de una manera solucionadas por otras personas. El codigo que he puesto es de esos codigos ( smart codes ) que deben estar en el block de notas de todo usurio del GM.
Date cuenta que al contrario de los graficos o el sonidos, el codigo puede y debe ser reutilizado y tampoco es necesario que sea 100% creado por uno mismo.
Para mi, tu dominio del GML dependera de cual habil seas en combinar funciones con las estructuras de control ( if, switch, while, do-while, for, repeat) "sazonandolas" con elementos de Programacion Orientada a Objetos ( principalmente herencia ).

Te repito tu respuesta me parece ingeniosa y luego de leer como fue que te inspiraste, me ha parecido curioso pero... le ha faltado "colmillo" ( experiencia ). ;)
Saludos!

The next best thing to knowing something,
is knowing where to find it.