Нужно что-то типо системы определения высот...
|
|
GraF251996 | Дата: Понедельник, 24 Января 2011, 22:50:32 | Сообщение # 1 |
8 уровень
Группа: Проверенные
Сообщений: 756
Награды: 1
Репутация: 321
Блокировки:
| Надо чтобы пуля при столкновении с рельефом уничтожалась,сейчас обьясню: Вот как в варе Вот как надо: Также если,скажем,юнит стоит выше,линия движения пули должна быть тоже,соответственно выше. Пишу тут,поскольку джасс не знаю. Примечание: надо чтобы юнит также умирал при столкновении с декором(юнитов не трогать - осуществленно) Если не поняли что я хочу,напишите,и я нарисую еще пару схем)
12Gb RAM 1333@1600 | AMD Phenom II x4 B50 3.1Ghz@3.70Ghz | Asus Xonar D1 | Asus GTX560Ti 1Gb GDDR5 820Mhz@965Mhz | Asus VW225N
Сообщение отредактировал GraF251996 - Понедельник, 24 Января 2011, 22:57:17 |
|
|
|
Kаrat | Дата: Понедельник, 24 Января 2011, 23:11:45 | Сообщение # 2 |
3 уровень
Группа: Пользователи
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
| Quote (rixt7956) забей, вар не потдерживает работу с 3d векторами На jass поддерживает.
|
|
|
|
rixt7956 | Дата: Понедельник, 24 Января 2011, 23:13:59 | Сообщение # 3 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| нет.если да то сделай пример и этим ты сделаешь прорыв в картостраение.
Сообщение отредактировал rixt7956 - Вторник, 25 Января 2011, 20:58:53 |
|
|
|
Kаrat | Дата: Понедельник, 24 Января 2011, 23:15:59 | Сообщение # 4 |
3 уровень
Группа: Пользователи
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
| Quote (rixt7956) нет.если да то сделай пример и этим ты сделаешь прорыв в картостраение. http://www.youtube.com/watch?v=l3cVS9G0lBg&feature=player_embedded Теперь скажи мне, что это 2d движение.
|
|
|
|
rixt7956 | Дата: Понедельник, 24 Января 2011, 23:19:21 | Сообщение # 5 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| за исключением молний Добавлено (24-01-2011, 23:18) --------------------------------------------- я не с компа. объясни мне что на том видео. Добавлено (24-01-2011, 23:19) --------------------------------------------- и ты сам jass знаешь?
|
|
|
|
Kаrat | Дата: Понедельник, 24 Января 2011, 23:20:22 | Сообщение # 6 |
3 уровень
Группа: Пользователи
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
| Quote (rixt7956) забей, вар не потдерживает работу с 3d векторами http://xgm.ru/p/wc3/math_mov Вот ещё. Quote (rixt7956) я не с компа. объясни мне что на том видео. Посмотришь сам, когда зайдёшь с компа.
|
|
|
|
Manko_O | Дата: Понедельник, 24 Января 2011, 23:20:24 | Сообщение # 7 |
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
| rixt7956, Не работал с этим так что уверенным быть не могу. local unit u = наш дамми local real fld = GetUnitFlyHeight(u)//высота полёта даммика. local location lo = Location(GetUnitX(u),GetUnitY(u)) local real fl2 = GetLocationZ (lo) if fl < fl2 then //если высота рельефа больше высоты полёта даммика то делаем свои действия.(взрываем и т.д) else //двигаем дальше например. endif
|
|
|
|
rixt7956 | Дата: Понедельник, 24 Января 2011, 23:29:46 | Сообщение # 8 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| высота полета всегда будет одинаковой не зависимо от рельефа. Добавлено (24-01-2011, 23:29) --------------------------------------------- это идея не возможна потому что ты не сможешь определить высоту z юнита в воздухе, именно z , а не высоту полета.
|
|
|
|
Manko_O | Дата: Понедельник, 24 Января 2011, 23:33:17 | Сообщение # 9 |
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
| rixt7956, А зачем находить z юнита? Высоты тебе будет мало?
|
|
|
|
rixt7956 | Дата: Понедельник, 24 Января 2011, 23:38:10 | Сообщение # 10 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| хотя можно определить z точки, а потом добавить к ней высоту полета дами, завтра попытаюсь сделать наработку Добавлено (24-01-2011, 23:36) --------------------------------------------- повторяю, высота полета это число равное указанное число высоты+высота рельефа. Добавлено (24-01-2011, 23:38) --------------------------------------------- но при определение ее тебе появиться только указанное тобой число.
|
|
|
|
Manko_O | Дата: Вторник, 25 Января 2011, 00:05:01 | Сообщение # 11 |
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
| Хм... Ещё проблема нельзя использовать будет на возвышенности) Сразу сработает. Не вариант...
|
|
|
|
FkoFF | Дата: Вторник, 25 Января 2011, 00:23:09 | Сообщение # 12 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| все реально, уже делалось неоднократно.. Суть: globals location udg_LocZ_Point = Location(0,0) endglobals function GetUnitZ takes unit u returns real call MoveLocation(udg_LocZ_Point, GetUnitX(u),GetUnitY(u)) return GetLocationZ(udg_LocZ_Point) endfunction function GetUnitZEx takes unit u returns real return GetUnitZ(u)+GetUnitFlyingHeight(u) endfunction function SetUnitZ takes unit u, real z returns nothing call SetUnitFlyingHeight(u, z-GetUnitZ(u), 0) endfunction а дальше - классический Comparison: if GetLocationZ(PolarX(GetUnitX(u),FaceAngle(u),20),PolarY(GetUnitY(u),FaceAngle(u),20)) >= GetUnitZEx(u) then call KillUnit(u) endif Добавлено (25-01-2011, 00:23) --------------------------------------------- или даже компарисон можно проще: if GetUnitFlyingHeight(u) != 5 then call KillUnit(u) endif
|
|
|
|
rixt7956 | Дата: Вторник, 25 Января 2011, 07:27:15 | Сообщение # 13 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| ты не понял, при движение юнита надо будет все время менять высоту полета, подстраивая ее под начальное положение, так как при передвижение, если этого не будет, пуля будет все время к примеру на расстояние 400 от высоты рельефа.
|
|
|
|
FkoFF | Дата: Вторник, 25 Января 2011, 07:35:22 | Сообщение # 14 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| rixt7956, неужели до тебя дошло )
|
|
|
|
rixt7956 | Дата: Вторник, 25 Января 2011, 08:30:26 | Сообщение # 15 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| я это с самого начала понял
|
|
|
|
[DUОS] | Дата: Вторник, 25 Января 2011, 08:40:00 | Сообщение # 16 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Так сделать можно. Формула для вычисления высоты юнита над ландом: landZ + unitFlyHeight, где landZ - высота рельефа, а unitFlyHeight - высота полёта этой самой пули. Таким образом, при каждой смене позиции пули нужно устанавливать высоту юнита, равную предыдущей (она должна быть const), записывая куда-нибудь высоту пули изначальную и меняя итоговое Z на это значение с проверкой, что юнит не ниже ланда. Если кому интересно, напишу подобный спелл.
|
|
|
|
[stebashka] | Дата: Вторник, 25 Января 2011, 09:11:18 | Сообщение # 17 |
пути и нити разными бывают
Группа: Библиотекари
Сообщений: 4719
Награды: 5
Блокировки:
| многим думаю это будет интересно
|
|
|
|
moped555 | Дата: Вторник, 25 Января 2011, 15:49:51 | Сообщение # 18 |
4 уровень
Группа: Пользователи
Сообщений: 92
Награды: 0
Репутация: 0
Блокировки:
| Если делаете выложите это будет оч. жестоко
|
|
|
|
[DUОS] | Дата: Вторник, 25 Января 2011, 16:12:35 | Сообщение # 19 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (|stebashka|) многим думаю это будет интересно Хорошо. Code function IsZLargerThanZ takes real x1, real x2, real y1, real y2 returns boolean local location l1 = Location(x1,y1) local location l2 = Location(x2,y2) local real z1 = GetLocationZ(l1) local real z2 = GetLocationZ(l2) call RemoveLocation(l1) call RemoveLocation(l2) set l1 = null set l2 = null if z1 > z2 then return true else return false endif endfunction
function GetPointUnitPropHeight takes real x, real y, unit u, real prop returns real local location l = Location(x,y) local location loc = GetUnitLoc(u) local real z1 = GetLocationZ(l) local real z2 = GetLocationZ(loc) local real fh = GetUnitFlyHeight(u) call RemoveLocation(loc) call RemoveLocation(l) set loc = null if z2 + fh != prop then return prop - z2 else return z2 + fh endif endfunction Эти две замечательные функции нам помогут. Всё, что от вас требуется - вставить их в общий код карты, а в функции движение написать следующий код: Code if IsZLargerThanZ(GetWidgetX(bullet),GetWidgetY(bullet),GetWidgetX(bullet)+dist*Cos(a),GetWidgetY(bullet)+dist*Sin(a)) then call KillUnit(bullet) else call SetUnitFlyHeight(bullet,GetPointUnitPropHeight(GetWidgetX(bullet),GetWidgetY(bullet),bullet,prop),0.) endif bullet - Дамми-пуля; dist - Расстояние, на которое перемещается пуля за единицу времени; a - Угол, под которым происходит перемещение; prop - Значение, которое показывает, какую поддерживать пуле высоту.
|
|
|
|
Dreii | Дата: Вторник, 25 Января 2011, 16:28:57 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS], Ты не перестаешь радовать)
|
|
|
|
rixt7956 | Дата: Вторник, 25 Января 2011, 20:54:57 | Сообщение # 21 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| Quote (|DUОS|) function IsZLargerThanZ takes real x1, real x2,real y1, real y2 returns boolean Quote (|DUОS|) if IsZLargerThanZ(GetWidgetX(bullet),GetWidgetY(bullet),GetWidgetX(bullet)+dist*Cos(a),GetWidgetY(bullet)+dist*Sin(a)) then Ты тут напутал
Сообщение отредактировал rixt7956 - Вторник, 25 Января 2011, 20:56:47 |
|
|
|
[DUОS] | Дата: Среда, 26 Января 2011, 14:55:22 | Сообщение # 22 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| rixt7956, Ойблин, да. Напутал. Спасибо тебе.
|
|
|
|
GraF251996 | Дата: Среда, 26 Января 2011, 16:50:56 | Сообщение # 23 |
8 уровень
Группа: Проверенные
Сообщений: 756
Награды: 1
Репутация: 321
Блокировки:
| Оу,сейчас розгребу) Кстати видел подобную систему в карте UnRes она является открытой,но я ничего в джассе не смыслю так что.))) Кому интересно можете вскрыть посмотреть. Карта с хгм.Добавлено (26-01-2011, 16:50) --------------------------------------------- [DUОS], можешь выложить в карте? плз))
12Gb RAM 1333@1600 | AMD Phenom II x4 B50 3.1Ghz@3.70Ghz | Asus Xonar D1 | Asus GTX560Ti 1Gb GDDR5 820Mhz@965Mhz | Asus VW225N
|
|
|
|
Vova5009 | Дата: Среда, 26 Января 2011, 18:47:28 | Сообщение # 24 |
8 уровень
Группа: Проверенные
Сообщений: 577
Награды: 0
Репутация: 125
Блокировки:
| Незнаю, может то, что нужно. P.S. Да простит меня администрация за ссылку на другой сайт)
Сообщение отредактировал Vova5009 - Среда, 26 Января 2011, 18:47:56 |
|
|
|
GraF251996 | Дата: Четверг, 27 Января 2011, 18:33:56 | Сообщение # 25 |
8 уровень
Группа: Проверенные
Сообщений: 756
Награды: 1
Репутация: 321
Блокировки:
| Vova5009, очень непохоже на то что надо это вообще нужно для стрельбы ПКМДобавлено (27-01-2011, 18:33) --------------------------------------------- ап
12Gb RAM 1333@1600 | AMD Phenom II x4 B50 3.1Ghz@3.70Ghz | Asus Xonar D1 | Asus GTX560Ti 1Gb GDDR5 820Mhz@965Mhz | Asus VW225N
|
|
|
|