ComunidadID
Bienvenido a ComunidadID

¿Quieres promocionar tu videojuego?

Regístrate y publicalo 
en nuestros foros!


No estás conectado. Conéctate o registrate

Ayuda de colisiones

    

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

1resuelto Ayuda de colisiones el 16/10/2016, 17:35

LagunaLife


Nivel: 4
Nivel: 4
Hola amigos! hace relativamente poco que me he metido en el mundo de la programacion de videojuegos. Al principio intente hacer algo en GameMaker Studio, pero como casi todo requiere de código pues no conseguir hacer mucho. Compre el ClickTeam Fusion mediante el Humble Bundle (al igual que este verano con Game Maker) y me esta encantando! lo veo mucho mas intuitivo.

Hay un par de cosas que no consigo resolver. Os voy a dejar un video y el archivo de mi juego o prueba mejor dicho que estoy haciendo.

Resulta que el personaje cuando cae sobre el bloque de interrogación, la animación de caída no termina hasta que me muevo hacia alguna dirección. He intentado varias cosas pero no consigo dar con la tecla ¿alguna idea?. Otra duda que tengo, que aparece al principio del vídeo, es que si me tiro al vacío, y me pego al bloque de tierra, el personaje tiende a subir hacia arriba automáticamente... ¿como podría hacer para que cayera sin mas?.


Archivo de la prueba: https://mega.nz/#!VAZCBRYA!lOqHyMG301zYzK-vQb_TPlyD3dHEsJ_chpGx8NepXIk


Quiero agradecer al que ha creado el canal de YouTube ComunidadID, ya que gracia a sus videos estoy aprendiendo bastante =).



Última edición por LagunaLife el 16/10/2016, 21:02, editado 1 vez

http://sopadetoad.com

2resuelto Re: Ayuda de colisiones el 16/10/2016, 18:47

Mart


ADMINISTRADOR
ADMINISTRADOR
Hola [Tienes que estar registrado y conectado para ver este vínculo] bienvenido que tal. Soy Mart, la persona que esta detrás del los tutoriales de ComunidadID de youtube.

He visto tu ejemplo y ya te lo e retocado para que funcione todo bien. Te explico, vayamos por partes. El tema de las animaciones.

Cuando tu personaje toca suelo, la animación si que funciona bien. Esto es por o siguiente: Le estas diciendo que cuando el salto sea igual a 0, que la animación se restaure. Y cuando el salto es igual a 0? pues según tu le has puesto, cuando el personaje toque suelo.

Esto quiere decir que cuando tu personaje toque suelo, pues la animación se restaura. Por eso funciona bien.
Pero ahora viene tu problema, y es que cuando el personaje cae encima del bloque de interrogación o encima del bloque de los ladrillos, la animación no se restaura hasta que no te mueves hacia la izquierda o derecha. Y esto sucede porque en ninguna parte le estas diciendo que al caer sobre esos bloques que la animación se restaure.

Entonces, si entras a los eventos, baja abajo del todo y veras que te he creado 2 nuevos eventos. En uno dice lo siguiente:

-(Plataform movement object): Test for obstacle overlap
-Colision between (Detector) and (block)
- X (Plataform movement object): object is moving

Cuando suceda eso le decimos a la animación del personaje que se restaure. (En el evento del medio, donde pone "Detector" luego te explico que es eso)

Entonces aqui le estamos diciendo que cuando el (Plataform movement object) detecte que el personaje esta tocando suelo, y ese suelo es cuando el detector este tocando el bloque de interrogacion y a su vez. el personaje NO SE ESTA MOVIENDO
Entonces ahi la animacion se restaura.

Luego he creado otro evento exactamente igual pero cambiando el bloque de interrogacion por el de los ladrillos.

Ahora cuando saltes encima de ellos veras que funciona bien.

Vale esto soluciona el tema de las animaciones. Ahora vayamos al otro problema que sucedia que cuando te caías por el lateral del suelo, el personaje subia lentamente.
Esto pasa porque se supone que le decimos que cuando nuestro personaje toque suelo, pues que este se pare. Que es lo que sucede? pues que al caer por el lateral, tu personaje toca el suelo con su brazo ejejjeej entonces esta detectando que esta tocando suelo, entonces se ejecuta la accion de que tu personaje se pare, y como se esta cumpliendo todo el rato, el personaje sube lentamente hacia arriba hasta que suba a la superficie y ya no este colisionando contra el suelo.

Para hacer esto lo que he hecho es crear otro active que le he llamado "Detector" ese active es un cuadradito rojo mas pequeño que el personaje.
Lo que le decimos al (Plataform movement object) es que envez de manejar al personaje, que maneje al detector ese del que te estoy hablando. y luego en la condicion que hay arriba del todo que pone Alway le decimos que al personaje se situe en donde este el cuadradito detector.

luego las variables donde pone que cuando el personaje toque suelo y otros eventos similares, los he cambiado para que en vez de decirle que cuando el personaje toque suelo, le pongo que cuando el detector toque suelo. y asi con los demas eventos, por que ahora el personaje real, el que se mueve, es el detector, no el personaje. El personaje solo sera un grafico que se situa todo el rato donde esta el detector y simplemente estara para recrear las animaciones. Pero el personaje real es el detector. (Que por cierto el detector he puesto que este invisible para que no se vea.)

Entonces, esto soluciona el problema? En parte si, porque al ser un cuadrado, no tiene brazos ni puntas que sobre salgan, entonces cuando caes por el lateral, cae raso, no penetra dentro del suelo entonces no detecta que esta colisionando todo el rato. No se si me explico.

Pero al hacer esto también a surgido un pequeñito problema, y es que al estar tocando igualmente el suelo por el lateral, el salto siempre es igual a 0 entonces podía saltar todo el rato mientras caia y tocaba la pared por el lado. Que he hecho para solucionar esto?

Pues dentro de los eventos, en el grupo que tienes creado que se llama Movimiento Personaje. Si te fijas el primer evento lo e duplicado y le he añadido una nueva condición que diga que el personaje este cayendo. y que cuando esto se cumpla pues que el salto se ponga en 2.

Ha esto lo que le decimos es que si el personaje esta tocando suelo (Que cuando cae por el lateral esta tocando suelo)
Y a su vez esta cayendo. Pues ponemos la variable salto en 2. Y como el salto esta en 2, pues no podemos saltar porque para saltar hace falta que el salto este en 0 que es cuando estas tocando suelo pero no cayendo.

No se si me habré explicado todo bien. Parece un rollo pero es facil. Ahora te paso el enlace de tu ejemplo modificado para que le eches un vistazo.

Enlace: https://dl.dropboxusercontent.com/u/63334699/Solucionar%20problemas/PixelGame-ARREGLADO.mfa

Ya nos dirás si te a servido amigo.

http://www.comunidadid.com

3resuelto Re: Ayuda de colisiones el 16/10/2016, 19:09

Zonacas


ADMINISTRADOR
ADMINISTRADOR
Usar detectores soluciona muchos problemas con el tema de las colisiones  2Ok




Pedazo de tocho has soltado [Tienes que estar registrado y conectado para ver este vínculo] feliz

Deberias hacer un Video sobre PMO avanzado con todas las posibilidades que ofrece el objeto


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

4resuelto Re: Ayuda de colisiones el 16/10/2016, 19:18

LagunaLife


Nivel: 4
Nivel: 4
Lo he entendido todo! he estado viendo el ejemplo y todo lo que has explicado y genial, es mas eres de los pocos que sabe explicarlo todo tan detalladamente, que viene genial para novatos como yo jajaja. He seguido otros cursos y tal y me he perdido bastante, así que te lo agradezco.

Ahora me ha surgido otro problema =(. Si te das cuenta ahora si salto en diagonal sobre los bloques de interrogación o los ladrillos, el personaje traspasa esos bloques. El motivo se cual es, por que ahora lo has cambiado por el detector y no por el personaje. He creado un evento nuevo que diga q cuando choque el personaje con esos bloques se pare, como lo tenia antes, pero claro... volvemos al mismo problema, que el personaje sube hacia arriba. ¿Tiene alguna solución esto?. 

Saludos!

Edito: Otra duda, perdon jajaja =(. Hay alguna forma de decirle al programa, que cuando mi personaje caiga de un bloque superior, se ejecute la animacion de caida?. Por que saltando si se ejecuta, pero si me tiro al vacio por ejemplo no, y quedaria mas profesional asi =)

http://sopadetoad.com

5resuelto Re: Ayuda de colisiones el 16/10/2016, 19:35

Mart


ADMINISTRADOR
ADMINISTRADOR
Mira no se si habrás visto el siguiente vídeo en mi canal. Es un vídeo donde uso el objeto plataform movement donde al colisionar contra un bloque al saltar, hago que el personaje rebote hacia abajo. Así no traspasa el bloque hacia arriba, sino que al saltar y golpearle, este rebota hacia abajo.



Dime si te sirve.





EDITO:

Acabo de ver tu otra duda ejejje. Eso que pides de la animacion al dejarte caer es facilisimo.

Crea un evento que diga:

-(Plataform Movement Object): Object is falling

y luego la condicion te vas al player y le dices: Change animation sequence to falling.

Es decir. Esto lo que hace es que cuando detecte que el personaje este cayendo, simplemente le dices que se ejecute la animacion falling, que es la de caer.

Saludos amigo

http://www.comunidadid.com

6resuelto Re: Ayuda de colisiones el 16/10/2016, 19:46

Zonacas


ADMINISTRADOR
ADMINISTRADOR
Más detectores? Arriba Derecha e Izquierda




Para la animación Falling que funciona cuando saltas y caes pero no si te tiras de un bloque

(Platform Movement Object):
Object is falling Flecha Derecha Change animation sequence to Falling







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

7resuelto Re: Ayuda de colisiones el 16/10/2016, 19:54

LagunaLife


Nivel: 4
Nivel: 4
¡Genial! con el video lo he comprendido todo. Es mas cuento una cosa, puse que cuando el personaje chocara con el objeto "?" Y 500, con lo que lo tira hacia abajo, hasta ahi todo bien, pero si choco de lado con el bloque tambien te tiraba hacia abajo rapido y no me gustaba eso. Entonces lo he puesto que cuando el detector superior de la cabeza choque con el bloque pues entonces que tire Y 500, ahora si que va bien =). Tambien se podria poner supongo que si el personaje choca con el bloque y a su vez ejecuta la animacion salto, pues Y 500 ¿seria otra forma no?.

Y bueno lo de caer y ejecutar la animacion caida, no funciona. Yo lo tenia de esa forma pensaba que si pongo que el objeto plataforma este cayendo, pues que se ejecute animacion de caida. Pero solo pasa asi cuando salto, no cuando me dejo caer =(.

http://sopadetoad.com

8resuelto Re: Ayuda de colisiones el 16/10/2016, 20:03

Mart


ADMINISTRADOR
ADMINISTRADOR
Si haces que colisione con el mismo personaje tambien se puede hacer claro. Ya todo es cuestion de gustos y de lo que quieras conseguir.

Sobre lo de la animacion que dices que no funciona? Yo lo he hecho con tu ejemplo y si funciona.

Baja abajo de los eventos del todo y crea un nuevo evento que diga esto:

(Platform Movement Object): Object is falling  ------> Change animation sequence to Falling

Te tiene que ir que yo lo he probado con tu mismo ejemplo.

http://www.comunidadid.com

9resuelto Re: Ayuda de colisiones el 16/10/2016, 20:06

LagunaLife


Nivel: 4
Nivel: 4
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Si haces que colisione con el mismo personaje tambien se puede hacer claro. Ya todo es cuestion de gustos y de lo que quieras conseguir.

Sobre lo de la animacion que dices que no funciona? Yo lo he hecho con tu ejemplo y si funciona.

Baja abajo de los eventos del todo y crea un nuevo evento que diga esto:

(Platform Movement Object): Object is falling  ------>   Change animation sequence to Falling

Te tiene que ir que yo lo he probado con tu mismo ejemplo.

Yo es que lo tenia asi de antes, mira te hago captura:



Y si me tiro por el barranco (sin saltar) o de algún bloque, sigue con la animación de parado =S

http://sopadetoad.com

10resuelto Re: Ayuda de colisiones el 16/10/2016, 20:08

Mart


ADMINISTRADOR
ADMINISTRADOR
mmm.. puedes pasarme el mfa y lo miro haber que sucede?

http://www.comunidadid.com

11resuelto Re: Ayuda de colisiones el 16/10/2016, 20:14

LagunaLife


Nivel: 4
Nivel: 4
[Tienes que estar registrado y conectado para ver este vínculo] escribió:mmm.. puedes pasarme el mfa y lo miro haber que sucede?

Claro aqui lo dejo =), seguramente sea un error mio, habre puesto algo que "frene" por asi decirlo que se ejecute esa animacion solo al caer.

Aqui esta: https://mega.nz/#!lQhQgLLb!VVtTQNQUY4QtuU5ux6iV1lod6dw-X3J4c2q0f0fn6Lg

http://sopadetoad.com

12resuelto Re: Ayuda de colisiones el 16/10/2016, 20:51

Mart


ADMINISTRADOR
ADMINISTRADOR
Vale ya se. Te explico. Al igual que cualquier otra programacion. El programa lee el codigo de arriba a abajo. Esto quiere decir que primero se ejecuta el evento numero 1, luego el evento numero 2, y asi todos hasta llegar al ultimo. Esto es asi.

Entonces lo que ocurre en tu codigo es que primero tienes un codigo que dice que cuando el personaje caiga, que se ejecute la animacion caer. hasta aqui bien, pero esque justo despues tienes un codigo que dice que si el personaje esta cayendo y el salto es igual a 0, pues que la animacion se restaure a la principal.

Entonces lo que sucede en tu codigo es que primero comprueba que tu personaje esta cayendo, y comprueba que si es asi, y tira a ejecutar la animacion de caer, pero esque justo despues le dices que si el personaje cae y el salto es 0, que se restaure la animacion a la principal y ese es el motivo por el cual no hace la animacion de caer.

Lo que he hecho es arrastrar el primer evento del que hablo arriba, debajo del otro. Es decir, esos dos eventos de los que hablo, cambiales el orden, pon el segundo arriba del primero.

Te paso el enlace: [Tienes que estar registrado y conectado para ver este vínculo]

http://www.comunidadid.com

13resuelto Re: Ayuda de colisiones el 16/10/2016, 21:01

LagunaLife


Nivel: 4
Nivel: 4
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Vale ya se. Te explico. Al igual que cualquier otra programacion. El programa lee el codigo de arriba a abajo. Esto quiere decir que primero se ejecuta el evento numero 1, luego el evento numero 2, y asi todos hasta llegar al ultimo. Esto es asi.

Entonces lo que ocurre en tu codigo es que primero tienes un codigo que dice que cuando el personaje caiga, que se ejecute la animacion caer. hasta aqui bien, pero esque justo despues tienes un codigo que dice que si el personaje esta cayendo y el salto es igual a 0, pues que la animacion se restaure a la principal.

Entonces lo que sucede en tu codigo es que primero comprueba que tu personaje esta cayendo, y comprueba que si es asi, y tira a ejecutar la animacion de caer, pero esque justo despues le dices que si el personaje cae y el salto es 0, que se restaure la animacion a la principal y ese es el motivo por el cual no hace la animacion de caer.

Lo que he hecho es arrastrar el primer evento del que hablo arriba, debajo del otro. Es decir, esos dos eventos de los que hablo, cambiales el orden, pon el segundo arriba del primero.

Te paso el enlace: [Tienes que estar registrado y conectado para ver este vínculo]

Genial, lo acabo de hacer sin mirar el ejemplo que me has puesto, gracias a tus pasos =). El orden es algo que aun me lio, supongo que con la experiencia se vera todo con mas claridad. Pues por ahora listo! modifico el tema como resuelto, muchas gracias!.

http://sopadetoad.com

14resuelto Re: Ayuda de colisiones el 16/10/2016, 21:05

Mart


ADMINISTRADOR
ADMINISTRADOR
Me alegro que se haya solucionado tu problema. Un saludo y gracias a ti amigo ^^

http://www.comunidadid.com

15resuelto Re: Ayuda de colisiones el 16/10/2016, 22:23

LagunaLife


Nivel: 4
Nivel: 4
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Me alegro que se haya solucionado tu problema. Un saludo y gracias a ti amigo ^^

Hola Mart, me he encontrado con otro problema, no se si puedo publicarlo en este mismo tema para no abrir otro, o una vez resuelto no se puede abrir mas D:.

Sino ya lo se para otra vez =), el caso es que ya lo tengo casi todo perfecto pero resulta que cuando salto sobre algun bloque ya sea interrogacion o ladrillo, al saltar de lado mientras cae se ejecuta la animacion de caida perfecto, pero cuando toca dichos bloques sigue con la animacion activa, en vez de ejecutarse la animacion de andar ¡el personaje parece que patina!.

No se si me explico bien, pero he creado un video para que lo veas, como siempre gracias por tu atencion. He estado probando cosas pero no doy con la tecla. He intentado poner que: cuando la animacion caida se este ejecutando, el detector colisione con el bloque "?", y la direccion de nuestro personaje sea hacia la izquierda: Pues nuestro personaje ejecuta la animacion andar hacia la izquierda.
Lo mismo hice con la derecha, pero sigue patinando igual, se queda la animacion caida ejecutandose hasta que dejo de mover al personaje.

http://sopadetoad.com

16resuelto Re: Ayuda de colisiones el 16/10/2016, 22:47

Mart


ADMINISTRADOR
ADMINISTRADOR
[Tienes que estar registrado y conectado para ver este vínculo]

Solucionado amigo, entra en los eventos y ves al ultimo de todos, ahi lo he creado, lo veras enseguida.

Simplemente le tienes que decir que cuando el player esta tocando los ladrillos y a su vez se esta moviendo, pues que haga la animación de caminar.

[Tienes que estar registrado y conectado para ver este vínculo]

Saludos compañero

http://www.comunidadid.com

17resuelto Re: Ayuda de colisiones Hoy a las 18:23

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.