что такое значение этого collision_line()? collision_line()
функция возвращает идентификатор экземпляра - однако, когда ничего не будет найден, он возвращает noone
(-4
) .. Так что вы должны проверить, что первый:
var inst, imgangle;
inst = collision_line(...);
if (inst != noone) {
imgangle = inst.image_angle;
//etc etc
}
или alternativelly (более чисто в GM), мы можем «злоупотреблять» заявлением with
. С выполнением всего следующего кода с точки зрения данного экземпляра id (или для всех экземпляров определенного объекта при предоставлении идентификатора объекта).
Однако значение noone
автоматически предотвратит любое выполнение.
var inst, imgangle;
inst = collision_line(...);
with (inst) {
imgangle = image_angle;
//note that we do no longer have to put "inst." before getting a variable
//etc etc
}
IMO, используя 'with()' таким образом, является вполне разумным и не является злоупотреблением случайным поведением. Вы запускаете код на любом экземпляре, который был найден - если ни один не найден, вы не запускаете код. – Medo42
Я нашел решение в то время, но спасибо, что нашел время ответить :) – CodeMinion