[Game Maker] Problema con la máscara de colisión

Galbix

¿Algún experto de Game Maker en la sala? Tampoco creo que sea necesario, mi problema es una tonteria minúscula pero que me trae de cabeza precisamente por eso, porque salvo que sea un bug de Game Maker deberían ser increiblemente facil de solucionar.

Os pongo en situación, estaba haciendo un ejemplo muy, muy simple de plataformas en Game Maker para mi hermano y quería evitar usar la variable gravity que ya viene por defecto en el programa, así como objetos solid, place_free y todo ese rollo. Todo funciona de puta madre, salvo un pequeño detalle: al chocar contra una pared, si es por la parte derecha va perfecto, pero desde la izquierda se come un pixel que parece no detectar la colisión. Un gif vale más que mil palabras:

Evento Create de oHero:

spoiler

Evento Step de oHero (FÍSICAS):

spoiler

Evento Step de oHero (SPRITES):

spoiler

Como veis, el código no podría ser más simple. Uso Game Maker Studio (v1.4).

Estoy casi seguro de que tiene que ver con la linea de image_xscale = -1, principalmente porque si no volteo el sprite todo va bien. Pero las mascaras están centradas y tienen la misma anchura todas. ¿Acaso image_xscale modifica la máscara de colisión de alguna manera no esperable? Y si fuera asi, ¿hay alguna manera simple y efectiva de solucionarlo?

marod

#1 Yo de GM poco pero ¿no has pensado que tal vez el problema no sea del heroe, si no del cubo por la parte derecha?

1 respuesta
Galbix

#2 ¡Gracias por la respuesta! Sí, me lo planteé cuando me cansé de probar cosas más "ortodoxas" lol. Probé un par de cosas con el cubo y su colisión, pero el problema seguía ahí. Supongo que el hecho de que todo funciona bien si no uso image_xscale = -1 (voltear el sprite, basicamente) en oHero es prueba más que funcione de que no va por ahí la cosa.

Meleagant

No estoy muy puesto en GM, pero ¿es posible que el sprite tenga un pivot/anchor point que no esté centrado horizontalmente?

javifugitivo

Es muy raro, si el sprite está centrado debería ir bien. Prueba a no voltearlo, sino a crear el sprite volteado aparte y sustituirlo en vez de voltearlo a ver que tal y me cuentas. A ver si vamos descartando errores/soluciones.

Dudas: ¿Cuanto mide el sprite de ancho? ¿Está centrado automáticamente o lo has centrado tú?

Usuarios habituales

  • javifugitivo
  • Meleagant
  • Galbix
  • marod