GML -> проверить переменную сталкивающегося экземпляра, затем выполнить действие
Я пытался сделать некоторые сценарии GML, но в какой-то момент застрял полностью. Я хочу, чтобы враги атаковали моего главного героя, но не перекрывая друг друга. Итак, я бы сказал.
//enemy is moving left-to-right...
if place_meeting(x+1, y, enemy){ //if there's a collision with another enemy
if (other enemy).is_attacking{ // ???
// checks if the colliding enemy is attacking, if true, it should attack as well...
is_attacking=true;
}else{
//walks
}
Это изображение, которое описывает то, что я пытаюсь получить (обратите внимание, что враги знают, что они должны атаковать, даже если они не находятся в прямом контакте с главным героем, просто потому, что враг кроме него атакует)
1 ответ
Решение
Я наконец смог сделать это благодаря функции места экземпляра.
Я выложу код на случай, если кому-то понадобится что-то подобное
if place_meeting(x+5, y, malo){ //malo means enemy on spanish, i use to write multilingual code, lol :P
var inst;
inst=instance_place(x+15,y,malo); //x varies on sprite size. it basically returns the unique id of the object that's 15 pixels on the right of self (malo)
with (inst){
if (is_attacking){
other.is_attacking=true; //if collided enemy is attacking, then this(other) enemy should attack too. search more about the width statement if you don't catch this part
}else{
other.is_attacking=false;
hspeed=1;
}
}
}else if place_meeting(x+3, y, character){
is_attacking=true;
}else{
is_attacking=false;
hspeed=1;
}
и результат