tengo un solido sin colisiones que baja en diagonal y cuando colisiona con el jugador (no solido) se para y no continua su ruta, el jugador tiene la variable x, y seteadas a hspeed y vspeed del objeto, aparte de setear colision cuando se encuentra a x+8, y-8 de dicho objeto solido.
he intentado poner el objeto como no solido y la colision del jugador en all objects, pero no me hace bien la colision. ¿no existe alguna forma de que el solido ignore la colision y siga su ruta sin importar las colisiones que el jugador tenga con el?

Yo pondría los dos objetos como no sólidos y buscaría la forma de que las colisiones funcionen bien ¿Exactamente qué es lo que no funciona de las colisiones? La forma más fácil sería poner en el jugador un evento de colisión con el objeto que baja en diagonal y poner ahí lo que necesites
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Otro usuario víctima de los sólidos...

Cita de: abramelin en Marzo 11, 2014, 04:50:51 PM
¿no existe alguna forma de que el solido ignore la colision y siga su ruta sin importar las colisiones que el jugador tenga con el?

Hasta donde yo sé, no. Quizás un usuario con más experiencia sepa cómo. Según lo que entiendo, es que de eso se trata ser sólido: los sólidos reaccionan en automático a las colisiones. Por eso es que muchos usuarios no recomiendan su uso. Es una de esas características de GM que Mark Overmars  "inventó" para propagar la idea de que "hacer videojuegos con GM es sencillo aún si no sabes programar mediante códiigo".

Lo que recomienda Mgbu se me hace lo más sensato: no usar sólidos (mandarlos al &""%$) y manejar las colisiones tú mismo.

#3 Marzo 11, 2014, 07:42:26 PM Ultima modificación: Marzo 11, 2014, 07:45:24 PM por abramelin
lo que no funciona es que el solido que esta bajando se para al tocar el jugador y me gustaria que no parase. si el solido lo pongo en no solido y al jugador le digo que las colisiones sen all objects lo atravisa lentamente y no hace la colision, llevo un rato probando y lo hace si lo fuerzas, pero lo hace...
bien pues no me importa ponerlo en no solido mientras la colision funcione, alguna forma eficiente de abordar el problema jugando ya con no-solidos?

Cita de: abramelin en Marzo 11, 2014, 07:42:26 PM
si el solido lo pongo en no solido y al jugador le digo que las colisiones sen all objects lo atravisa lentamente y no hace la colision, llevo un rato probando y lo hace si lo fuerzas, pero lo hace...
bien pues no me importa ponerlo en no solido mientras la colision funcione, alguna forma eficiente de abordar el problema jugando ya con no-solidos?

¡Bienvenido al mundo sin sólidos!

Son muchas las maneras de trabajar las colisiones sin sólidos. con place_free, place_empty, place_meeting, las funciones bbox_left, bbox_right, bbox_top, bbox_bottom, las funciones de colisión collision_line, collision_circle_collision_rectangle, etc, etc.

Cita de: abramelin en Marzo 11, 2014, 07:42:26 PM
al jugador le digo que las colisiones sen all objects lo atravisa lentamente y no hace la colision

Esa no es la mejor manera. Tienes que ser más preciso. No sabría decirte exactamente cual porque con todas las funciones de colisión se puede. Tienes que ir trabajando la que tenga más sentido para ti. Sea cual sea el método que uses, probablemente lo mejor sea usar objetos parent para manejar las colisiones.

 a ver, yo uso parents para todas las colisiones,pero la idea seria hacer una colision aparte sola y exclusivamente para este objeto que baja en diagonal

if j1.y > escalon.bbox_top... supongo que seria lo mismo para bbox_bottom, j1.x < escalon.bbox_right...
no tendria mas sentido que al colisionar con la mascara del escalon que es cuadrada hiciera colision y punto?
¿como harias vosotros la colision con este objeto que ahora es no-solido? si hace falta subo imagenes

#6 Marzo 11, 2014, 08:20:33 PM Ultima modificación: Marzo 11, 2014, 08:23:01 PM por penumbra
Cita de: abramelin en Marzo 11, 2014, 08:12:23 PM
no tendria mas sentido que al colisionar con la mascara del escalon que es cuadrada hiciera colision y punto?

¿Según tu, qué es hacer colisión y punto? ¿Detener al jugador después de la colisión? Eso era en el mundo sólido. Acá no necesariamente chocar contra un objeto se traduce en anulación de movimiento.

Pues el detalle es nada más revisar que haga colisión por encima del escalón (o sea con los pies) para detener la inercia del jugador (vspeed = 0, gravity = 0)y hacer que éste se mueva con el escalón o si hace colisión con los lados de un escalón, detener el movimiento horizontal del jugador... creo que es a lo que te refieres con esa funciones bbox que pusiste.


cuando digo hacer colision y punto me refiero a que si to le tengo indicado al j1 que cuando colisione con escalon haga exactamente lo que tengo puesto en ese evento si esta indicado que vspeed sea 0, que sea 0 y no atraviese
adjunto imagen con todos los datos de mascaras, dimensiones y eventos... a ver que cojines esta mal, y como abordarias vosotros esta situacion enconcreto teniendo todos estos valores

Respondo para ampliar un poco el tema de los solidos y por no hay que usarlos:
Lo que sucede es que cuando un objeto es marcado como solido, este objeto
se comporta diferente en el evento Collision, dado que aunque tu no pongas
codigo dentro del evento, el GM automaticamente realiza ciertas acciones
"detras de escena" con todo objeto marcado como solido.
Evento Collision de un objeto "Solido"
Aclaro esto sucede para ambas instancias

1)las instancias son puestas en una posicion previa a la colision.

2)las acciones que se encuntren dentro del evento Collision son ejecutadas

3)Ambas instancias son puestas en sus nuevas posiciones basado en su speed.

4)Un chequeo adicional es hecho,  asegurando que las instancias no estan
colisionando y si es asi, las instancias son.puestas de vuelta a su posicion
previa de nuevo.
The next best thing to knowing something,
is knowing where to find it.

Pues de lo que puedo deducir de esa imagen (y puede que me equivoque), es que el jugador atraviesa por la manera en que la máscara de colisión está definida. La máscara de colisión debe abarcar totalmente los pies del personaje, así como está, los pies quedarían "dentro" del escalón.


Cita de: penumbra en Marzo 11, 2014, 09:25:23 PM
La máscara de colisión debe abarcar totalmente los pies del personaje, así como está, los pies quedarían "dentro" del escalón.
es que eso es lo que quiero, que queden dentro del escalon... la mascara es la mascara, y en teoria es lo que debe de respetar en la colision, no el sprite..., el sprite en si sin la mascara es un grafico sin mas... intentad hacedlo vosotros con las mismas dimensiones y a ver como hariais vosotros la colision no solida

Hecho un pequeño ejemplo, tal vez te ayude en algo.
The next best thing to knowing something,
is knowing where to find it.

gracias vampy, lo he adaptado a mi juego y no me hace la colision, supongo que sera por las demas variables como gravedad etc. voy a seguir investigando. gracias por tomarte el tiempo de hacer un ejemplo

#13 Marzo 12, 2014, 01:24:08 AM Ultima modificación: Marzo 12, 2014, 01:31:35 AM por penumbra
BUeno, acá está mi versión que incluye escaleras parecidas a las tuyas y un mono controlable (bastante cutre el control)  XD

A ver si te sirve. No está pulido, pero en esencia hace lo que buscas, o eso creo yo.  :-[


ole ole. solo una cosa podrias pasarlo gmk o decirme como carafarlo desde gm8 es que no consigo abrirlo y el gmstudio no lo tengo aqui