Ближайший юнит
|
|
aqwexxx | Дата: Суббота, 19 Июля 2014, 12:07:47 | Сообщение # 1 |
3 уровень
Группа: Проверенные
Сообщений: 57
Награды: 0
Репутация: 0
Блокировки:
| Как выбрать ближайшего юнита к какой то точке, например. Спасибо!
|
|
|
|
[SeKtOR] | Дата: Суббота, 19 Июля 2014, 19:37:32 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
| http://www.hiveworkshop.com/forums....-204217 http://www.hiveworkshop.com/forums....-166199
|
|
|
|
Extremator | Дата: Суббота, 19 Июля 2014, 21:09:11 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| set P1 = точка вокруг которой идёт поиск
пикаешь юнитов в радиусе R от точки P1 отсеиваешь нужных - заноси в группу G
если группа НЕ пуста, то >>> set U = null >>> set D = 9999. >>> работаешь в группой G >>> >>> set P2 = позиция пикнутого юнита >>> >>> если дистанция между P1 и P2 меньше D, то >>> >>> >>> set U = пикнутый юнит >>> >>> >>> set D = дистанция между P1 и P2 >>> >>> удалить точку P2 >>> очистить группу G >>> === теперь можшь работать с самым ближайшим юнитом U ===
удалить точку P1
Сообщение отредактировал Extremator - Суббота, 19 Июля 2014, 21:10:41 |
|
|
|
aqwexxx | Дата: Воскресенье, 20 Июля 2014, 12:12:43 | Сообщение # 4 |
3 уровень
Группа: Проверенные
Сообщений: 57
Награды: 0
Репутация: 0
Блокировки:
| ОХ...Цитата Extremator ( ) пикаешь юнитов в радиусе R от точки P1 отсеиваешь нужных - заноси в группу G
если группа НЕ пуста, то >>> set U = null >>> set D = 9999. >>> работаешь в группой G >>> >>> set P2 = позиция пикнутого юнита >>> >>> если дистанция между P1 и P2 меньше D, то >>> >>> >>> set U = пикнутый юнит >>> >>> >>> set D = дистанция между P1 и P2 >>> >>> удалить точку P2 >>> очистить группу G >>> === теперь можшь работать с самым ближайшим юнитом U ===
удалить точку P1 РАзве дистанция между р1 и р2 не будем меньше 9999 всегда?
|
|
|
|
Extremator | Дата: Воскресенье, 20 Июля 2014, 18:57:54 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Цитата aqwexxx ( ) РАзве дистанция между р1 и р2 не будем меньше 9999 всегда? каждый раз когда жистанция будет меньше чем предыдущее значение - оно будет записывать новое более меньшее значение
в первый раз он берёт 9999, и любой первый юнит будет ближайшим далее он возьмёт ещё одного, если он дальше - то его расстояние будет больше D если ближе - то будет меньше, а значит будет записано его растояние
таким образом переменная будет постоянно записывать новые значения, если они будут меньше в итоге - ты получишь самое наименьшее значение и юнита с котором оно было записано
|
|
|
|
aqwexxx | Дата: Понедельник, 21 Июля 2014, 20:35:55 | Сообщение # 6 |
3 уровень
Группа: Проверенные
Сообщений: 57
Награды: 0
Репутация: 0
Блокировки:
| Спасибо! Заработало! Не знал, что так можно через группу юнитов делать. Кинул бы скрин. но не знаю как.
|
|
|
|
SirNikolas | Дата: Понедельник, 21 Июля 2014, 20:54:36 | Сообщение # 7 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Загрузи на хостинг (например, сюда) и дай ссылку. А зачем скрин, если выше приведено рабочее решение?
|
|
|
|
aqwexxx | Дата: Понедельник, 21 Июля 2014, 23:34:28 | Сообщение # 8 |
3 уровень
Группа: Проверенные
Сообщений: 57
Награды: 0
Репутация: 0
Блокировки:
| Цитата SirNikolas ( ) Загрузи на хостинг (например, сюда) и дай ссылку. А зачем скрин, если выше приведено рабочее решение? НУ так, просто, для наглядности)))
|
|
|
|