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
Se puede, usando una condicion if:
[gml]
if (sprite_index <> spr_verde){ //si el sprite es diferente de verde, colisionar
//efectuar comandos de colision
}
// en otro caso, no sucede nada.
[/gml]
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(...).
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);
}
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.
[gml]
if (sprite_index <> spr_verde)
{
if collision_rectangle(16,28,113,134,obj_pared,true,true){
//cosas que pasan cuando colisiona
}
}[/gml]
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.
if !place_free(x+hspeed,y+vspeed) && sprite_index != spr_verde {
Tu código para colisionar
Ej: hspeed = 0; vspeed = 0
}
Saludos