BizzaroFukuro
MWS Hardcore
offline
Опыт:
2,178Активность: |
Интерактивный труп
Суть в следующем: нужно при смерти юнита создать его труп, который можно атаковать, и который не разлагается до конца игры.
Для этого я использую триг с такой функцией: Код:
Есть две проблемы: 1. Положение трупа != положению умирающего юнита (у трупа "Тип движения = Нет", физ.размер = 0). Несовпадение положения - в пределах 32 коорд.точек (если на глаз). 2. В момент показа трупа (т.е. после 1.34 секунды), если камера игрока находилась далеко, то анимация трупа будет замороженный "stand". Если камера рядом (охватывает своим полем зрения умирающего юнита), то всё в порядке. Это распространяется на каждого игрока индивидуально, т.е. кто-то видит труп по-нормальному, а кто-то видит его стоячим. Что делать? Отредактировано BizzaroFukuro, 30.06.2010 в 11:46. |
27.02.2010, 13:13 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
XiMiKs добавил: Убрать слип и не понятную глобалку. |
27.02.2010, 13:18 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
BizzaroFukuro
MWS Hardcore
offline
Опыт:
2,178Активность: |
Цитата:
Цитата:
Цитата:
Цитата:
Отредактировано BizzaroFukuro, 27.02.2010 в 14:10. |
||||
27.02.2010, 13:41 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exAres
I love magic :)
offline
Опыт:
7,788Активность: |
BizzaroFukuro, насчет первого: ты сначала удали старого юнита а потом создавай труп. |
27.02.2010, 13:46 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
Зачем глобалку в локалку? да и в принципе функцию можно запускать через TriggerAddAction. Слип менять на таймер.
XiMiKs добавил: И ты при SetUnitPathing false ставил? Труп 1 кстати не удаляешь. 2 |
27.02.2010, 13:47 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
SetUnitX/Y после создания.
FellGuard добавил: Вообще, делай по событию "юнит начинает разлагаться", не надо будет так заморачиваться. |
27.02.2010, 13:49 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mr_ILYAS
Kicked by XimikS
offline
Опыт:
492Активность: |
А ты в курсе, что когда создаешь юнита в каком то месте. он всё равно создается не в точном месте где хотел?
Поэтому всё равно надо юнита передвигать после того как создал
call SetUnitX(c,GetUnitX(u))
call SetUnitY(c,GetUnitY(u)) в строке call SetUnitTimeScalePercent(c,0.) Percent можно убрать (но только в твоём случае, так как у тебя всё равно ноль стоит)
По поводу второго вопроса, попробуй: call SetUnitAnimationByIndex(какой юнит, номер анимации) (номер анимации можно принимать от 0 до 15 (больше я не видел юнита у которого больше анимаций) ) |
27.02.2010, 13:58 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
BizzaroFukuro
MWS Hardcore
offline
Опыт:
2,178Активность: |
Цитата:
Цитата:
Цитата:
Цитата:
|
||||
27.02.2010, 14:09 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
BizzaroFukuro, криво ты пробовал. SetUnitX/Y поместит юнита куда надо даже если указанные координаты находятся за пределами карты. Смена события, во-первых, избавит тебя от беготни с TriggerSleepAction(), во-вторых не надо будет создавать лишнюю локалку. |
27.02.2010, 14:13 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
BizzaroFukuro
MWS Hardcore
offline
Опыт:
2,178Активность: |
Цитата:
Это я знаю, поэтому буду пробовать ещё. Но вообще основная проблема - вторая. Ради одной первой проблемы я бы не стал мутить тему (просто спросил до кучи). |
|
27.02.2010, 14:24 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
короче так) Дело было в скорости смешения анимаций.
|
27.02.2010, 14:53 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
никогда не вызывайте remove unit если он не мёртв |
27.02.2010, 15:16 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
ScorpioT1001, а он мёртв) Т.е. ф-ия срабатывает на событие UNIT_DECAY
FellGuard добавил: Вообще да, забыл сказать, ещё Тс рекомендовал не использовать РемувЮнит вообще. Вполне достаточно опрозрачнить, игра доделает остальное. |
27.02.2010, 15:24 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
BizzaroFukuro
MWS Hardcore
offline
Опыт:
2,178Активность: |
Цитата:
Что по поводу первой проблемы - я делал также, как в твоём примере. Как ни странно, это всё равно не помогло, до тех пор пока я не поставил у трупа физ.размер 16 вместо нуля. Цитата:
|
||
28.02.2010, 17:26 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
FellGuard, лично я убираю юнита так:
Отредактировано DoctorGester, 28.02.2010 в 17:58. |
28.02.2010, 17:43 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
|
28.02.2010, 18:36 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
XiMiKs, чем плохо то? у меня при убийстве юнита еще тексттаги над головой появляются, так что мне нужно его из поля зрения убирать |
28.02.2010, 19:56 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
BizzaroFukuro
MWS Hardcore
offline
Опыт:
2,178Активность: |
Всем спасибо, можно закрывать. |
02.03.2010, 12:54 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|