Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Определить ближайший объект (http://www.flasher.ru/forum/showthread.php?t=160518)

Scorp2008 13.07.2011 17:46

Определить ближайший объект
 
В игре реализовал проверку на столкновение между пулей и врагами ПОСРЕДСТВОМ ПЕРЕСЕЧЕНИИ ЛИНИИ И КВАДРАТА (т.е. это не ХитТест, это отдельная функция), всё работает, но проблема в том что первоначальное опужие не должно постреливать сразу 2 врагов, а получается что простреливает. Алгоритм такой что все враги которые попали под линию выстрела - получают ранение, а хотелось бы чтобы только ближайший к герою враг. Единственное что в голову мне приходит так это до того как делать ранение - определять всех врагов которые попали под линию, далее сравнивать их координаты с координатами героя и который ближе всего - получает ранение. Но может есть путь поудобнее и попроще? Спасибо.

NikolyA 13.07.2011 17:49

http://xitri.com/2009/03/19/crimsonl...ionscript.html

Scorp2008 13.07.2011 17:58

Вы вообще читаете что написано в теме? Блог хитри я весь перечитал еще когда на АС 2 писал, и статься совершенно не в тему. Вопрос мой возникает из того что у меня столкновение определяются пересечением линии и квадрата, а в статье Хитри вообще HitTest делается и такого вопроса в принципе не может там возникнуть.

DaFive 13.07.2011 17:59

А зачем проверять всех на линии? Сделать проверку до первого определения столкновения. Наверняка циклом бегаете.
Код AS3:

if(!враг_задет)
{
враг_задет = true;
экшн
}


Scorp2008 13.07.2011 18:01

Функция определяет всех на линии, задаем конец и начало линии и она выдает массив точек пересечения. Не пишите чуши пожалуйста если до конца не понимаете о чём я.

DaFive 13.07.2011 18:05

Так и напишите как действует ваш алгоритм, прежде чем вопросы задавать, чтобы другим все ясно было.

Scorp2008 13.07.2011 18:07

Я изначально написал "пересечение линии и квадрата", если у вас мозга не хватает чтобы понять что этот алгоритм может действовать только по законам геометрии (которые для всех одинаковы) то это ваши проблемы.

Добавлено через 1 минуту
Просто поражают люди лишь бы что-нибудь вякнуть даже не вникнув в суть вопроса и не прочитав внимательно.

i.o. 13.07.2011 18:10

ну раз выдает массив, то нужно отсортировать его по расстоянию от стрелка до объекта. А потом взять первый объект и все.

Scorp2008 13.07.2011 18:12

i.o. выдает массив точек пересечения, но не массив объектов которые пересекаются. Хотя массив объектов которые пересекаются отсюда сделать не сложно, вопрос то в том и состоит, как отсортировать их по расстоянию от стрелка до объекта?

DaFive 13.07.2011 18:13

Если кому-то не хватает мозга определить пересечение с первым попавшимся от начала линии квадратом по одинаковым для всех законам геометрии - тут уже никто помочь не сможет.


Часовой пояс GMT +4, время: 14:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.