Линия видимости AS3 без использования объекта, обладающего наибольшим хитом. - PullRequest
1 голос
/ 01 октября 2011

Я работаю над игровым проектом и работаю над аспектом искусственного интеллекта в игре.Я хочу, чтобы вражеские объекты начали прицеливаться и стрелять в игрока, когда они находятся в поле зрения врага, и я наткнулся на эту статью о том, как это сделать: http://www.emanueleferonato.com/2007/04/29/create-a-flash-game-like-security-part-2/

мой вопрос: можете ли выэто то же самое без использования реальной линии?Вы можете, например, использовать контрольную точку попадания и в основном определить линию?или каким-то другим способом сделать это, не ставя объект на сцену.

Я пытаюсь сделать вещи максимально эффективными и не хочу использовать этот подход, если это возможно.Если у вас есть какой-либо совет, код или ссылки на полезный ресурс, я был бы очень признателен за это!

1 Ответ

3 голосов
/ 01 октября 2011

Просто используйте расчеты, но не строку

Это важный код

dist_x = _root.hero._x-_x;
dist_y = _root.hero._y-_y;
dist = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
angle = Math.atan(dist_y/dist_x)/(Math.PI/180);
if (dist_x<0) {
    angle += 180;
}
if (dist_x>=0 && dist_y<0) {
    angle += 360;
}
wall_collision = 0;
for (x=1; x<=dist; x++) {
    point_x = _x+x*Math.cos(angle*Math.PI/180);
    point_y = _y+x*Math.sin(angle*Math.PI/180);
    if (_root.wall.hitTest(point_x, point_y, true)) {
        wall_collision = 100;
        break;
    }
}

, если wall_collision = 100, игрок находится в поле зрения полицейского.Я бы просто использовал для этого логическое значение.

...