ComunidadID
Bienvenido a ComunidadID

¿Quieres promocionar tu videojuego?

Regístrate y publicalo 
en nuestros foros!


No estás conectado. Conéctate o registrate

Individualizar multiples objetos "instancias" en Clickteam Fusion 2.5

    

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

ProgramacionMX


Nivel: 4
Nivel: 4
Hola comunidad. Les vengo a exponer mi problema:
Resulta que estoy trabajando en un proyecto donde quiero implementar un sistema de cámaras al estilo de juegos de plataformas 2D de la NES como los juegos de megaman, donde cada cuarto estaba seccionado y la cámara se detenia en ciertas zonas para esperar a que el jugador alcanzara la orilla del nivel. Quise hacer este sistema lo mas "general" posible para que pueda rehusar los mismos objetos en cada nivel. Yo estoy utilizando un active object que al iniciar el nivel se escala al mismo tamaño que la pantalla y este es el que sigue mi frame "scrolling", y el movimiento de la cámara la limito con otros active objects de dos tipos que llamo "Scrolling X" y "Scrolling Y", los cuales se escalan al tamaño de mi pantalla en "X" o en "Y" respectivamente. Estos objetos quiero que se posicionen a las orillas de cada sección de mi nivel, yo secciono el frame de acuerdo al tamaño de la pantalla de mi juego, entonces determino las distancias de cada orilla con esta información, pero aquí es donde surge mi problema:
Quiero que estos objetos se posicionen automáticamente a sus respectivas orillas al iniciar el frame, yo lo intente mediante "fast loops" pero me genero problemas con los posicionamientos cuando importaba multiples objetos del mismo tipo, aunque cuando no utilize los fast loops los objetos si se posicionan bien aunque surge el problema de que al iniciar el nivel se nota el salto de posición de cada objeto a donde deben ir. Lo que yo quiero es que al iniciar mi nivel no se noten esos "saltos de posicionamiento" de mis objetos.
Alguien ha trabajado con objetos multiples donde pongan un código que pueda funcionar para varios objetos?, Yo intente usar Qualifiers pero igual me daba este problema con los fast loops, y también intente usar el método "tradicionar" de usar un "Spread Value ID" para identificar a cada objeto pero aun asi no me los posicionaba bien.
Un saludo y espero haberme explicado bien 2Ok

Zonacas


ADMINISTRADOR
ADMINISTRADOR
Bueno, es un poco confuso entender como lo estas haciendo exactamente, tal vez un video ayudaria

pero entiendo que lo que quieres saber es como trabajar con diferentes instancias del mismo objeto

Lo que se suele hacer en Fusión

es utilizar Spread Value para numerar las distintas instancias en una de sus variables que llamamos ID

Spread value 0 in ID

y a través de esa variable ID podemos seleccionar la instancia con la que trabajar
(la seleccionamos en la condición )

para seleccionarla la comparamos con alguna variable que vaya tomando el valor de la instancia con la que queremos trabajar

ID of (Active)= IDComparar

o con el index de un Fast Loop

ID of (Active)= LoopIndex("Instancias")

para usar el Fast loop debemos iniciar un Fast loop con el número total de instancias que tenemos

Start loop "Instancias" NObjects ("(Active)") times

Hay que tener en cuenta que el Fast Loop ira recorriendo una a una todas las instancias, (si no salimos del loop) así que hay que poner alguna condición más que discrepe algunas instancias, por ejemplo que la instancia este en overlapping o no con algún objeto etc

Normalmente se usa el Fast loop cuando hay varias instancias que pueden cumplir las condiciones pero otras no




Ejemplo sencillo Instancias.mfa (Fusion 2.5)


_________________
http://oskystudios.wix.com/osky-studios

ProgramacionMX


Nivel: 4
Nivel: 4
Muchas gracias por responder Zonacas.
Ese método que mencionas ya lo he intentado y no me funciona con fast loops, pero mira para que quede todo bien claro subo el archivo con los frames con los que estoy trabajando.
El problema en todo esto es la posición de los active objects de color azul cielo y rosa, los cuales los estoy usando como delimitadores del movimiento de la cámara.
Revisando la sección "Camera Events":
En el frame 1, cuando posiciono un solo active object lo posiciona correctamente en su orilla correspondiente, pero si pones muchos de estos objetos notaras como unos de ellos no se posicionan correctamente. Aquí utilizo fast loops y "ID" para identificar cada objeto y comparar sus respectivas distancias a su orilla mas cercana.
En el frame 2, utilice el mismo método pero en lugar de usar un "ID", utilizo dos variables internas de cada objeto en el cual comparo su valor actual y le resto 1 al final de los eventos (OJO: Lo meti como un "Behavior" en los objetos que menciono). Este método funciona bien y me posiciona todo correctamente, el problema es que en ocasiones al iniciar el frame notaras como se posicionan estos objetos dando un salto a su orilla correspondiente.

Lo que quiero es que en un inicio se posicionen todos los objetos a sus respectivas orillas sin notar esos saltos ya que es importante que ya estén posicionados al inicializar la cámara. Notaras que la cámara en el frame 2 utilizo un active object que se escala al tamaño de la pantalla para usarlo cuando detecte la colision con estos objetos.
Saludos.

Aquí dejo el link de mi proyecto:
camera_NES.mfa

Zonacas


ADMINISTRADOR
ADMINISTRADOR
Ua hay mucho código

Para empezar sería bueno aislar el codigo, podrias hacer un mfa nuevo en el que solo funcione la cámara para ir probando

No veo esos saltos al iniciar el frame Surprised

no entiendo porque tienes que calcular donde se colocan los limitadores, no puedes colocarlos en sus posiciones en el frame editor y ya está?

estos delimitadores lo que hacen es detener la cámara?


_________________
http://oskystudios.wix.com/osky-studios

ProgramacionMX


Nivel: 4
Nivel: 4
Zonacas, si esos active objects son los que detienen la cámara, ya que si te fijas la cámara se puede mover libremente y sino uso un tipo de delimitadores puede que se vean zonas del escenario que no quiero que de vean. Mira yo pensé en poner los delimitadores de forma manual pero como mencioné que quería hacer esto lo más general posible, con esto quiero decir que cualquiera que utilice este sistema sólo necesite poner los objetos en el escenario y estos se ajusten automaticamente con código, has de cuenta que es un sistema de cámaras automático, y bueno el ajuste lo hice conforme a la posición más cercana a las orillas de la pantalla basándome en saltos de pantalla en pantalla recorriendome en el frame mediante una fórmula. Si es mucho código, lo de las cámaras lo metí en la sección que mencioné porque lo otro era el movimiento del jugador y no quise tocar esas secciones para que pudieran ver el efecto de las cámaras. Por último, quizás no notaste el salto porque dejé acomodado el objeto cerca de la orilla, pero intenta ponerlo en un lugar más lejos y a la hora que resetees el frame verás ese salto, esto ocurre en el frame 2, como quiera si crees que deba de aislar el código me avisas. Un saludo.

Zonacas


ADMINISTRADOR
ADMINISTRADOR
Pues sigo sin notar el salto al inciar el frame  Surprised

que build usas?

creo que sigo sin entender bien el problema, he eliminado el bloque azul ScreenXscrolling

y la cámara parece que funciona igual  Surprised (frame 1) de hecho en el frame 1, el código que hay es solo para posicionar no? pero no hay ninguna utilidad en el bloque azul

En el frame 2 si noto que al pasar por encima del bloque azul la cámara da un salto, pero no al iniciar el frame.

Si puedes mostrar el video de algún juego que muestre como quieres que funcione la cámara exactamente, podemos intentar crear una nueva cámara desde cero

Realmente no se que efecto de camara estas tratando de conseguir.


_________________
http://oskystudios.wix.com/osky-studios

elpupas7


MODERADOR
MODERADOR
Por lo poco que he visto entiendo lo siguiente:

Se quiere un frame dividido en varias "estancias" en las que el personaje se moverá con la cámara centrada en el pj y dejando que se acerque a los límites de cada estancia, lo habitual en un escenario simple.
Una vez superado esos límites la cámara se moverá a la siguiente "estancia" y se continuará del mismo modo.

Esto se puede hacer de varias formas como siempre y a continuación pongo el link de una posibilidad:

ScrollMegaman01.mfa

Lo que ya no entiendo mucho es el resto de la problemática: instancias de objetos que pasen de una "estancia" a otra...

ProgramacionMX


Nivel: 4
Nivel: 4
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Por lo poco que he visto entiendo lo siguiente:

Se quiere un frame dividido en varias "estancias" en las que el personaje se moverá con la cámara centrada en el pj y dejando que se acerque a los límites de cada estancia, lo habitual en un escenario simple.
Una vez superado esos límites la cámara se moverá a la siguiente "estancia" y se continuará del mismo modo.

Esto se puede hacer de varias formas como siempre y a continuación pongo el link de una posibilidad:

ScrollMegaman01.mfa

Lo que ya no entiendo mucho es el resto de la problemática: instancias de objetos que pasen de una "estancia" a otra...


Hola elpupas7, muchas gracias, ese ejemplo que subiste es el resultado de lo que busco, ustedes le llaman "estancias" es que yo me estoy basando en un ejemplo de un engine de megaman en ingles y ellos le llaman "rooms" por lo que ahí la confusión. En ese engine en el que me baso hay demasiado código y por eso estoy sacando lo mas relevante para hacer la cámara. Por lo que vi en el engine que subio elpupas7, definio cada región manualmente mediante números y de hecho es lo que busco en mi engine, pero yo lo quiero hacer mediante "active objects", comparando las distancias que hay entre la cámara y el active object mas cercano para ajustarse a la distancia adecuada. Para eso necesito ajustar estos active objects a la orilla de la región mas cercana una vez se inicie el frame, asi el que diseñe el escenario pueda poner estos objetos donde le plazca para tener una "estancia" en una zona en concreta. Por eso cree dos tipos de objetos, los rosas que son para delimitar las regiones en el eje "Y", y los azules cielo para delimitar las regiones en el eje "X", y pues también estoy escalando los objetos al tamaño de la pantalla para que cubran todo y se vea "mas estetico" a la hora de probar el escenario y ver estos objetos en acción.
Mi problema con estos objetos es el posicionarlos, ya que pues como verán en mi engine, solo uso un objeto que instancio varias veces, y de ahí use el ejemplo de Zonacas de ponerle un Spread Value a una variable de estos objetos y mediante un "Fast Loop" ir determinando la posición exacta de cada objeto individualmente, pero para este caso me surge el problema de que en ocasiones no todos los objetos se posicionan bien.
El segundo caso que estoy probando es el del frame 2, donde no utilizo Fast Loops, y meto todo como "Behavior" dentro de estos objetos, y ahí mediante flags determino si ya se posicionaron bien estos objetos. Este método me funciono muy bien, el problema que noto es que en ocasiones al iniciar el frame se nota un salto de tales objetos que dan desde donde los deje posicionados cuando diseñaba el nivel, a cuando se reposicionan por el código, y esto se nota mas cuando pones tales objetos a una posición lejana a las orillas de las "estancias". Esto puede que me ocasione errores cuando inicie el nivel ya que la cámara no se posicionara adecuadamente cuando se inicie el frame.
En conclusión: El problema que tengo prácticamente es en posicionar automáticamente los active objects en sus respectivas orillas de cada estancia.
Espero y esta vez haya quedado claro mi duda aun asi muchas gracias por el ejemplo "elpupas7", ya que el engine del que me baso es un poco confuso.

EDIT:
Pongo el link del engine del que me estoy basando:
megaman.mfa

ProgramacionMX


Nivel: 4
Nivel: 4
Hola de nuevo.
Se que estoy metiendo mas cosas en este tema pero estoy tocando el mismo tema que es sobre las instancias en Fusion 2.5. Bueno ahora si les tengo un archivo donde muestro los problemas que estoy teniendo. Intento hacer un bloque con bolas de fuego que giran alrededor de este (como los de super mario bros), pero mi idea es implementarla para que con solo colocar los bloques, las bolas de fuego se creen y comiencen a girar alrededor de este. Mi problema se muestra en los dos frames:
A cada bloque le doy un ID, y a cada bola de fuego le doy un ID y un ID del bloque al que corresponde.
Frame 1: Aquí utilizo dos fast loops, uno para contar el numero de bloques y el segundo para realizar ya sea la acción de crear las bolas de fuego o de irlas posicionando en la pantalla. En este frame funciona todo como debe ser.

Frame 2: Aquí quise expandir la idea, que cuando cambiemos de valor el flag 0  se recreen las bolas de fuego de acuerdo a lo que indiquemos en la variable del bloque. Mi problema aquí es que con un bloque funciona bien, pero al crear multiples bloques, las bolas de fuego no se posicionan en los bloques correspondientes.
A que se deberá el problema del Frame 2?, ya que quiero crear este sistema mas dinamico para que durante el juego pueda activar o desactivar las bolas de fuego.
Aquí dejo el link:
Fireball_Test

OceanoPolar


Nivel: 4
Nivel: 4
¿si lo que quieres es que giren por que no usas simplemente su angulo +1? Con una variable por ejemplo podrías poner variable =0 no hace nada variable = 1 su angulo +1 o +2 o +3 dependiendo de la velocidad que quieras

Zonacas


ADMINISTRADOR
ADMINISTRADOR
Así de un primer vistazo entre el frame 1 y el frame 2 veo has cambiado como se inician los loops, tal vez el problema viene por ahi


_________________
http://oskystudios.wix.com/osky-studios

ProgramacionMX


Nivel: 4
Nivel: 4
[Tienes que estar registrado y conectado para ver este vínculo] escribió:¿si lo que quieres es que giren por que no usas simplemente su angulo +1? Con una variable por ejemplo podrías poner variable =0 no hace nada variable = 1 su angulo +1 o +2 o +3 dependiendo de la velocidad que quieras
Gracias por responder. Mira el problema no es el giro, ya que en el primer frame utilizo la misma formula y si me funciona, de hecho el angulo lo vario con una variable de velocidad. El problema que estoy teniendo es con la posición de las bolas de fuego, que no se posicionan alrededor de sus respectivos bloques.

[Tienes que estar registrado y conectado para ver este vínculo] escribió:Así de un primer vistazo entre el frame 1 y el frame 2 veo has cambiado como se inician los loops, tal vez el problema viene por ahi
Lo se, quise ahorrarme un loop porque se que los fast loop consumen muchos recursos, pero en este caso utilice un flag, en lugar de utilizar el fast loop que recorre todos los bloques. Y no se porque solo me funciona con una instancia del objeto, pero cuando coloco el segundo bloque, las bolas de fuego ya no se posicionan bien. El flag lo utilizo mas que nada para referirme a una instancia en particular, pero no se que tan efectivo sea este método.
Otro detallito que he visto en otros tutoriales es que en los fast loops para multiples instancias, por seguridad agregas una variable string a su nombre, de preferencia que la variable sea del mismo objeto, para evitar que si utilizas el mismo nombre del fast loop durante el juego no haya conflictos, pero en mi caso tampoco funciona.

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

    

Permisos de este foro:
No puedes responder a temas en este foro.