Tengo lo siguiente:
if place_meeting(x,y,obj_villano){
atacar = true
with (other) {
animacion=true
x-=10;
}
}
la idea es modificar la variable animacion y moverlo hacia atras con x-=10.
Pero todo lo que esta adentro del with, no funciona.
La constante other sólo funciona en eventos de colisión y dentro de un with de adentro hacia afuera. Esto quiere decir que funciona dentro de un with así:
[gml]
pepito = "perez"
with (objeto_pepito)
{
show_message("Mi apellido es " + other.pepito);
}
[/gml]
Como puedes apreciar, dentro del with se tomará other.pepito como la variable pepito del objeto que ha "invocado" ese with.
Volviendo al tema, y tomando en cuenta lo dicho anteriormente, la constante other no funciona de la forma en la que la has puesto, ya que no está dentro de un evento de colisión o un with que la invoque, por lo tanto, es inútil.
Para solucionar esto, deberías, en vez de usar un place_meeting(), que sólo devuelve un booleano, usar un collision_rectangle(), que sí devuelve la id del objeto que colisiona.
[gml]
objeto = collision_rectangle(x, y, x+32, y+32, objeto_pepito, false, true);
if objeto != noone
{
atacar = true
with (objeto){
animacion=true
x-=10
}
}
[/gml]
Cita de: NiuWeb en Marzo 20, 2016, 10:53:37 PM
La constante other sólo funciona en eventos de colisión y dentro de un with de adentro hacia afuera. Esto quiere decir que funciona dentro de un with así:
[gml]
pepito = "perez"
with (objeto_pepito)
{
show_message("Mi apellido es " + other.pepito);
}
[/gml]
Como puedes apreciar, dentro del with se tomará other.pepito como la variable pepito del objeto que ha "invocado" ese with.
Volviendo al tema, y tomando en cuenta lo dicho anteriormente, la constante other no funciona de la forma en la que la has puesto, ya que no está dentro de un evento de colisión o un with que la invoque, por lo tanto, es inútil.
Para solucionar esto, deberías, en vez de usar un place_meeting(), que sólo devuelve un booleano, usar un collision_rectangle(), que sí devuelve la id del objeto que colisiona.
[gml]
objeto = collision_rectangle(x, y, x+32, y+32, objeto_pepito, false, true);
if objeto != noone
{
atacar = true
with (objeto){
animacion=true
x-=10
}
}
[/gml]
Gracias por la ayuda. Me funciono perfecto :D :D
También se puede usar la función instance_place, que necesita menos parámetros.