Область
|
|
samolet99 | Дата: Пятница, 08 Августа 2014, 14:35:29 | Сообщение # 1 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 0
Блокировки:
| Возможно ли сделать через триггеры, чтобы герой двигался к ближней области?
|
|
|
|
Q1wAse | Дата: Пятница, 08 Августа 2014, 16:18:18 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата samolet99 ( ) Возможно ли сделать через триггеры, чтобы герой двигался к ближней области? да
|
|
|
|
samolet99 | Дата: Пятница, 08 Августа 2014, 16:20:54 | Сообщение # 3 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 0
Блокировки:
| Q1wAse, не подскажите как?:)
|
|
|
|
SirNikolas | Дата: Пятница, 08 Августа 2014, 19:04:13 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Для начала требуется уточнить, что подразумевается под "ближней областью". Та из нескольких областей (записанных в массив), расстояние до центра которой меньше, чем у остальных?
|
|
|
|
samolet99 | Дата: Пятница, 08 Августа 2014, 19:12:44 | Сообщение # 5 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 0
Блокировки:
| SirNikolas, Верно
|
|
|
|
totti20 | Дата: Пятница, 08 Августа 2014, 21:41:06 | Сообщение # 6 |
5 уровень
Группа: Проверенные
Сообщений: 138
Награды: 0
Репутация: 0
Блокировки:
| Цитата samolet99 ( ) Возможно ли сделать через триггеры, чтобы герой двигался к ближней области? создаешь область, даешь приказ передвижения к выбранной области, там много вариантовДобавлено (08 Августа 2014, 21:41:06) ---------------------------------------------
Цитата samolet99 ( ) Возможно ли сделать через триггеры, чтобы герой двигался к ближней области? создаешь область, даешь приказ передвижения к выбранной области, там много вариантов
|
|
|
|
samolet99 | Дата: Суббота, 09 Августа 2014, 02:22:27 | Сообщение # 7 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 0
Блокировки:
| totti20, Допустим есть три стороны. Герой пошёл по 1 стороне. Жизни стало 200 или меньше, и он бежит к ближней области.
|
|
|
|
Q1wAse | Дата: Суббота, 09 Августа 2014, 10:04:25 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата samolet99 ( ) totti20, Допустим есть три стороны. Герой пошёл по 1 стороне. Жизни стало 200 или меньше, и он бежит к ближней области. Смахивает на ИИ. Заноси все области в переменные с массивом, а так же не забудь создать переменную целочисленную MAX в которой будет храниться максимальное число таких областей. Затем когда тебе нужно циклом сравнивай расстояние между героем и центром области в цикле это расстояние заноси в другую вещественную переменную и запоминай, если расстояние между героем и областью меньше чем значение вещественной переменной, то заноси в вещественную переменную расстояние от этой области до героя, а так же заноси эту области из массива в новую переменную типа область (не массив), для того чтобы к неё потом обратиться.
Это куда громоздкий вариант работы и возможно лучше было бы воспользоваться декартовой системой координат. А по точнее Jass вариант: допустим у нас уже есть переменные x и y типа real в которых лежат координаты Действия функции AI_Variable следует запихать в триггер с инициализацией! Код globals integer MinIndex real array x real array y integer MaxIndex unit array AI_Hero endglobals function AI_Variable takes nothing returns nothing set x[1] = 100. set y[1] = -100. set x[2] = 300. set y[2] = -300. set x[3] = 500. set y[3] = -500. set x[4] = 700. set y[4] = -700. set MaxIndex = 4 set AI_Hero[0] = gg_unit_Hmkg_0258 // Работаем с этим юнитом для теста, можно изменить на своего. endfunction function AI_CheckRun takes integer PlayerId returns integer local integer i = 0 local real dist = 1000000 local real xc = GetUnitX(AI_Hero[PlayerId]) local real yc = GetUnitY(AI_Hero[PlayerId]) loop set i = i + 1 exitwhen i > MaxIndex if SquareRoot(( ( x[i] - xc )*( x[i] - xc ) + ( y[i] - yc )*( y[i] - yc ))) < dist then set dist = SquareRoot(( ( x[i] - xc )*( x[i] - xc ) + ( y[i] - yc )*( y[i] - yc ))) set MinIndex = i endif endloop return MinIndex endfunction
Сообщение отредактировал Q1wAse - Суббота, 09 Августа 2014, 10:05:14 |
|
|
|
samolet99 | Дата: Суббота, 09 Августа 2014, 21:11:30 | Сообщение # 9 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 0
Блокировки:
| а через триггеры?
|
|
|
|
Q1wAse | Дата: Суббота, 09 Августа 2014, 21:36:54 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата samolet99 ( ) а через триггеры? Ну это и есть через триггеры, только не GUI вариант.
|
|
|
|
samolet99 | Дата: Суббота, 09 Августа 2014, 22:25:53 | Сообщение # 11 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 0
Блокировки:
| ну вот а мне нужен GUI вариант.
|
|
|
|
totti20 | Дата: Суббота, 09 Августа 2014, 22:42:31 | Сообщение # 12 |
5 уровень
Группа: Проверенные
Сообщений: 138
Награды: 0
Репутация: 0
Блокировки:
| Цитата samolet99 ( ) Допустим есть три стороны. Герой пошёл по 1 стороне. Жизни стало 200 или меньше, и он бежит к ближней области. ну все же просто емае, событие, вход в область условие, кто входит или то что тебе нужно действие, установить хп 200 и меньше, конечно если у героя не меньше, не знаю что ты имеешь в виду " и он бежит к ближней области" но также в действии отдаешь приказ о передвижении куда тебе надо.
|
|
|
|
samolet99 | Дата: Суббота, 09 Августа 2014, 22:50:48 | Сообщение # 13 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 0
Блокировки:
| закрывайте тему.
|
|
|
|
Q1wAse | Дата: Воскресенье, 10 Августа 2014, 09:02:08 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата totti20 ( ) ну все же просто емае, событие, вход в область условие, кто входит или то что тебе нужно действие, установить хп 200 и меньше, конечно если у героя не меньше, не знаю что ты имеешь в виду " и он бежит к ближней области" но также в действии отдаешь приказ о передвижении куда тебе надо. Это что ???????????? Он имеет ввиду про Искусственный Интеллект, если у героя здоровье меньше чем 200 хп(как он писал пример), то бежать к ближней области.
|
|
|
|
samolet99 | Дата: Воскресенье, 10 Августа 2014, 22:36:21 | Сообщение # 15 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 0
Блокировки:
| Q1wAse, верно:))
|
|
|
|