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: cancelar colision ?  (Leído 228 veces)

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

Desconectado florgm

  • Visitante
  • *
  • Puntos: 7
  • Mensajes: 3
    • Ver Perfil
en: Febrero 13, 2019, 03:52:56 pm
Buenos días/tardes/noches  :)

Estuve mirando en la lupa pero no encontré lo que necesito, mi problema es que tengo un sprite (obj_circulo) que colisiona con una pared (en el evento collision) y lo detiene, pero quiero que si el sprite  es de otro color, la pueda atravesar (spr_verde). Espero que se entienda, básicamente quiero saber si hay una forma de poner que si el sprite_index es otro entonces que en ese caso no colisione. Gracias de antemano! ;D

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Black_Cat

  • Ganador CGM Game Jam #1
  • Adicto
  • *
  • Puntos: 745
  • Mensajes: 356
  • Agradecido: 60 veces
  • 🧡🧡🧡🧡🧡
    • Ver Perfil
Respuesta #1 en: Febrero 13, 2019, 06:26:55 pm
Se puede, usando una condicion if:

if (sprite_index <> spr_verde){ //si el sprite es diferente de verde, colisionar
     //efectuar comandos de colision
}

// en otro caso, no sucede nada.


Aunque claro, depende de cómo estés haciendo las cosas, si con los eventos predefinidos o a través de un metodo de colision como collision_rectangle(...).

Únete al servidor mas chidori de Discord

 
Los siguientes usuarios dieron las gracias a este tema: florgm


Desconectado florgm

  • Visitante
  • *
  • Puntos: 7
  • Mensajes: 3
    • Ver Perfil
Respuesta #2 en: Febrero 14, 2019, 08:09:13 pm
Hola, gracias por responder! Lo puse así pero no me funcionó,  no sé si lo hice mal o le falta algo:

if (sprite_index <> spr_verde)
{
   collision_rectangle(16,28,113,134,obj_pared,true,true);
}

 


Desconectado Black_Cat

  • Ganador CGM Game Jam #1
  • Adicto
  • *
  • Puntos: 745
  • Mensajes: 356
  • Agradecido: 60 veces
  • 🧡🧡🧡🧡🧡
    • Ver Perfil
Respuesta #3 en: Febrero 15, 2019, 08:12:06 pm
Collision_rectangle lo que hace es verificar si existe una colision con las instancias del objeto determinado. En ese caso si estas empleando el codigo en el evento step, deberias verificar el momento en que colisiona.
if (sprite_index <> spr_verde)
{
   if collision_rectangle(16,28,113,134,obj_pared,true,true){  
                //cosas que pasan cuando colisiona
   }
}
   
« última modificación: Febrero 15, 2019, 08:37:37 pm por Black_Cat »

Únete al servidor mas chidori de Discord

 


Desconectado BssString

Respuesta #4 en: Febrero 19, 2019, 12:45:46 pm
Hola florgm

Tu problema puede ocurrir porque el objeto de colisión es sólido y tu obj_circulo tiene el evento "colisión". Si esas dos condiciones se dan, game maker gestiona por sí solo la colisión sin importar que condición le escribas.
Te recomiendo eliminar el evento colisión del obj_circulo y escribir la colisión en el step event tal como lo escribió Black_Cat.
Código: [Seleccionar]
if !place_free(x+hspeed,y+vspeed) && sprite_index != spr_verde {
Tu código para colisionar
Ej: hspeed = 0; vspeed = 0
}

Saludos