я не могу использовать (point_distance), чтобы убить любого врага рядом с моим героем GMK - PullRequest
0 голосов
/ 07 января 2020

У меня проблема с кодом в программе Game Maker. Я делаю маленькую игру, в которой есть путь, по которому идут враги и ставят героев на свою сторону, и когда враг приближается к нему, он поворачивается к нему и стреляет в него. I Я использую этот код

var ex, ey;
ex = instance_nearest(x, y, enemy).x;
ey = instance_nearest(x, y, enemy).y;

if point_distance(x, y, ex, ey) < 150
{
     image_angle = point_direction(x, y, enemy.x, enemy.y);
}

Код работает хорошо, но проблема в том, что мои герои только go только первому врагу, когда они приближаются к ним, а не go остальным, даже когда первый враг вне зоны досягаемости. Какое решение, пожалуйста, фото для иллюстрации Герои игнорируют ближайшего врага и направляются только к первому врагу, который появится в игре

Ответы [ 2 ]

1 голос
/ 12 января 2020

Вы проверяете правильного врага, но не указываете на правильного врага. Вместо этого сохраните идентификатор найденного экземпляра и используйте его для всех:

var e;
e = instance_nearest(x, y, enemy);
if (e != noone) { // wouldn't want to crash when you run out of enemies
    if (point_distance(x, y, e.x, e.y) < 150) {
        image_angle = point_direction(x, y, e.x, e.y);
    }
}
0 голосов
/ 08 января 2020

Вы можете использовать что-то вроде collision_circle_list(...). Эта функция выдаст вам список всех объектов, которые сталкиваются в этом круге, и вы можете перебирать их, чтобы найти ближайший, самый дальний и т. Д. c.

Ресурс: https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/movement%20and%20collisions/collisions/collision_circle_list.html

...